【问题标题】:Bluemix Apache Spark Service - plotting for scala?Bluemix Apache Spark 服务 - 为 scala 绘图?
【发布时间】:2015-12-17 14:15:55
【问题描述】:
有没有办法在适用于 Scala 的 Jupyter 笔记本中使用任何类型的绘图,例如适用于 Python 的 Matplotlib?
谢谢。
【问题讨论】:
标签:
scala
apache-spark
plot
ibm-cloud
jupyter
【解决方案1】:
对于 Bluemix 上的 Scala 笔记本,我主要使用了两个绘图库(按优先顺序):
-
Brunel [推荐]:我推荐使用 Brunel,因为它已经安装在 Bluemix 的笔记本服务器中。这允许您使用布鲁内尔魔法命令%%brunel:
// 示例 Scala 单元调用
%%布鲁内尔
data('https://raw.githubusercontent.com/Brunel-Visualization/Brunel/master/python/examples/data/whiskey.csv') 点 x(Rating) y(Age) bin(Rating,Age)
作为参考,这里有一些示例 Scala 笔记本示例:example 1example 2
-
Lightning-Viz:对于 Lightning-Viz,您需要一个自定义客户端 jar lightning-scala_2.10-0.2.0.jar,我已经重新编译它以与 Scala 2.10 兼容。在你的 Scala 单元中,你会做这样的事情......
/** 为可视化加载 Lightning Scala 客户端 */
%AddJar https://github.com/joshisa/lightning-scala/raw/master/dist/lightning-scala_2.10-0.2.0.jar -f
导入 org.viz.lightning._
导入 scala.util.Random
// 主机不应包含尾部斜杠
val lgn = Lightning(host="https://lightningviz.mybluemix.net");
lgn.auth = 无
lgn.createSession()
println("Woot!,我们有一个闪电对象。Bazinga!");
println("");
val x = Array.fill(100)(Random.nextDouble());
val y = Array.fill(100)(Random.nextDouble());
val somegroup = Array.fill(100)(Random.nextFloat() * 5).map(_.toInt);
val somelabels = (Array(“点 0”、“点 1”、“点 2”、“点 3”、“点 4”、“点 5”、“点 6”、“点 7”、“点 8” , "第 9 点", "第 10 点",
“第 11 点”、“第 12 点”、“第 13 点”、“第 14 点”、“第 15 点”、“第 16 点”、“第 17 点”、“第 18 点”、“第 19 点”、“第 20 点”、
“第 21 点”、“第 22 点”、“第 23 点”、“第 24 点”、“第 25 点”、“第 26 点”、“第 27 点”、“第 28 点”、“第 29 点”、“第 30 点”、
“第 31 点”、“第 32 点”、“第 33 点”、“第 34 点”、“第 35 点”、“第 36 点”、“第 37 点”、“第 38 点”、“第 39 点”、“第 40 点”、
“第 41 点”、“第 42 点”、“第 43 点”、“第 44 点”、“第 45 点”、“第 46 点”、“第 47 点”、“第 48 点”、“第 49 点”、“第 50 点”、
“第 51 点”、“第 52 点”、“第 53 点”、“第 54 点”、“第 55 点”、“第 56 点”、“第 57 点”、“第 58 点”、“第 59 点”、“第 60 点”、
“第 61 点”、“第 62 点”、“第 63 点”、“第 64 点”、“第 65 点”、“第 66 点”、“第 67 点”、“第 68 点”、“第 69 点”、“第 70 点”、
“第 71 点”、“第 72 点”、“第 73 点”、“第 74 点”、“第 75 点”、“第 76 点”、“第 77 点”、“第 78 点”、“第 79 点”、“第 80 点”、
“第 81 点”、“第 82 点”、“第 83 点”、“第 84 点”、“第 85 点”、“第 86 点”、“第 87 点”、“第 88 点”、“第 89 点”、“第 90 点”、
“点 91”、“点 92”、“点 93”、“点 94”、“点 95”、“点 96”、“点 97”、“点 98”、“点 99”));
val somesize = Array.fill(100)(Random.nextDouble() * 20 + 5);
val xaxis = "示例 x 轴标签";
val yaxis = "示例 y 轴标签";
val alpha = 数组(0.6);
val viz = lgn.scatter(x, y, somegroup, labels=somelabels, alpha=alpha, size=somesize, xaxis=xaxis, yaxis=yaxis);
val vizhtml = viz.getHTML
kernel.magics.html(s"""
${vizhtml}
""");