Apache Zeppelin对AngularJS有很好的支持。虽然Scala和Javascript之间存在差距。是否有更好的接口为Zeppelin添加Highcharts支持
我正在尝试将Highcharts支持添加到Zeppelin来填补这个空白。主要目标是直接从Spark DataFrame绘制它。
经过几轮重构,我想出了以下接口。
github.com/knockdata/zeppelin-highcharts
这里有两个选项。 哪个选项更好?
选项A
这是绘制highcharts一个例子。
highcharts(bank,
"marital",
List("name" -> "age", "y" -> avg(col("balance")), "orderBy" -> col("age")),
new Title("Marital Job Average Balance").x(-20),
new Subtitle("Source: Zeppelin Tutorial").x(-20),
new XAxis("Age").typ("category"),
new YAxis("Balance(¥)").plotLines(Map("value"->0, "width"->1)),
new Tooltip().valueSuffix("¥"),
new Legend().layout("vertical").align("right").verticalAlign("middle")
)
这是没有额外选项的代码。
highcharts(bank,
"marital",
List("name" -> "age",
"y" -> avg(col("balance")),
"orderBy" -> col("age")))
选项B
我拿出由@ honnix的回答与鼓舞人心的这个选项。它有更多的语法糖。
highcharts(bank).series("marital")
.data("name" -> "age", "y" -> avg(col("balance")))
.orderBy(col("age"))
.title(Title("Marital Job Average Balance").x(-20))
.subtitle(Subtitle("Source: Zeppelin Tutorial").x(-20))
.xAxis(XAxis("Age").typ("category"))
.yAxis(YAxis("Balance(¥)").plotLines("value"->0, "width"->1))
.tooltip(Tooltip().valueSuffix("¥"))
.legend(Legend().layout("vertical").align("right").verticalAlign("middle"))
.plot
没有选择简单的情节将是
highcharts(bank).series("marital")
.data("name" -> "age", "y" -> avg(col("balance")))
.orderBy(col("age"))
.plot
,将在此生成的图表。
说实话,我已经阅读过它,我仍然在想它。我还没有完全意识到你所期望的答案。 :) – eliasah
我前几天写了类似于R的东西。我正在考虑平滑,过滤线条,聚焦(或缩放)你不能这样做与ggplot2 – eliasah
@eliasah我添加更多的细节问题。我想问一下它是否一般和简单。任何方式来改善它? –