scala - 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
我在这里做错了什么?
这是包含 Scala 扩展的正确方法吗?
%AddDeps org.vegas-viz vegas-spark_2.11 0.3.11
解决方案
我能够解决这个问题,encodeX、encodeY 应该指定(统计)数字类型,即 Quant、Nom 或 Ord,以及列名。
下面的代码工作正常。
val usingSparkdf = Vegas("UsingSpark")
.withDataFrame(df1)
.encodeX("id", Nom)
.encodeY("value", Quant)
.mark(Bar)
usingSparkdf.show
推荐阅读
- python - python - 调试:绘图循环未显示下一个绘图
- javascript - 在 JavaScript 中创建 Antlr4 编译器的问题:将 JavaScript 转换为 Python 时出现意外输出
- java - Android 上的 okhttp 出现错误,预期为 null,但 okhttp3.internal.http1.Http1Codec
- string - 编写汇编语言代码来反转字符串
- reactjs - 更改分页选择/活动项目背景颜色
- javascript - 为什么我的函数不在 ajax 中发送变量?
- c# - iOS、Swift、Xamarin 中的生命周期感知
- javascript - 如何在 iOS 上的 PWA 中删除“无网络”警报
- python - 我在解析 XML 文件时遇到的一个案例
- chapel - 函数返回一个关联数组