Apache Zeppelin对AngularJS有很好的支持。虽然Scala和Javascript之间存在差距。
我正在尝试向Zeppelin添加Highcharts支持以填补这一空白。主要目标是直接从Spark DataFrame绘制它。
经过几轮重构,我想出了以下界面。
github.com/knockdata/zeppelin-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")))
我通过@ 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
这将生成一个图表。
答案 0 :(得分:1)
使用某种链接方法传递这些参数会很好,因为在一个apply()方法中将几个列表放在一起有点难以阅读。