首页 > 解决方案 > Jupyter Notebook (Scala, kernel - Apache Toree) with Vegas, 图表不显示数据

问题描述

我正在使用 Jupyter (kernal - Apache Torre) 使用 Apache Spark/Scala 进行分析。对于可视化,我正在尝试使用 Vegas(github - https://github.com/vegas-viz/Vegas

当我使用示例 Vegas 代码时 - 不使用 Vegas Spark 扩展,它工作正常(请参阅随附的屏幕截图)

但是,对于 DataFrames,它似乎没有显示图表。(即图表不显示数据)

这是代码 -

%AddDeps org.vegas-viz vegas_2.11 0.3.11 --transitive

%AddDeps org.vegas-viz vegas-spark_2.11 0.3.11

import vegas._
import vegas.render.WindowRenderer._
import vegas.data.External._
import vegas.sparkExt._

val seq = Seq(("a", 16), ("b", 77), ("c", 45), ("d",101),("e", 132),("f", 166),("g", 51))
val df = seq.toDF("id", "value")

df.show()

+---+-----+
| id|value|
+---+-----+
|  a|   16|
|  b|   77|
|  c|   45|
|  d|  101|
|  e|  132|
|  f|  166|
|  g|   51|
+---+-----+

val usingSparkdf = Vegas("UsingSpark")
  .withDataFrame(df1)
  .encodeX("id")
  .encodeY("value")
  .mark(Bar)

usingSparkdf.show

Vegas-with-DF

没有 DF 的维加斯

我在这里做错了什么?

这是包含 Scala 扩展的正确方法吗?

 %AddDeps org.vegas-viz vegas-spark_2.11 0.3.11

标签: scalajupyter-notebookapache-toreevegas-viz

解决方案


我能够解决这个问题,encodeX、encodeY 应该指定(统计)数字类型,即 Quant、Nom 或 Ord,以及列名。

下面的代码工作正常。

 val usingSparkdf = Vegas("UsingSpark")
      .withDataFrame(df1)
      .encodeX("id", Nom)
      .encodeY("value", Quant)
      .mark(Bar)

usingSparkdf.show

推荐阅读