时间序列图表:数据为行而不是列
Timeseries chart: data as rows instead of columns
我想使用条形图作为可视化,来描述几个应用程序之一在每个日期 运行 的次数(为简单起见,将应用程序视为 excel , word, powerpoint等。例如,在3月15日,如果用户打开Excel一次,然后打开Word两次,则Word将显示高度为2,[=25=将显示高度为1 ] 等)。
可视化显示了一年的堆叠数据(365 个条),其中每个堆叠条对每个程序使用不同的颜色。有20个节目。数据系列是堆叠的 - 例如 Word(如果有描述)总是在底部,然后是 Excel,等等
执行此操作的传统方法是使用创建 365 行和 20 列(Word、Excel 等)的外连接,每一天的每一列都有一个整数值。这种技术有效,但对数据库的计算非常密集(更不用说密集 SQL),我想知道是否有人知道处理此问题的时间序列图表工具。
这是一个数据旋转问题:我想提取行中的数据,并让图表产品 assemble 柱状图。它需要从数据中读取 Data Series 名称,并在遇到新值时创建一个新的 Data Series。我实际上有数千个可能的程序,但每个图表不太可能需要描绘超过 20 个。
图表产品应该像这样工作:
minDate=20150101, maxDate=20151231, interval=Day
然后数据是
20150315 "Word" 1
20150315 "Word" 1
20150315 "Excel" 1
20150316 "Powerpoint" 1
20150316 "Word" 1
或者,每一行可以是每个程序每天的总数:
20150315 "Word" 2
20150315 "Excel" 1
20150316 "Powerpoint" 1
20150316 "Word" 1
我正在使用带有 spark 和 scala 的 C3。我可以使用任何 javascript 库。
您要问的是如何将数据从宽格式重塑为长格式。在 Spark 中,您使用 DataFrame.explode
。假设你有这样的东西:
+--------+----+-----+
| date|word|excel|
+--------+----+-----+
|20150101| 3| 4|
|20150102| 1| 2|
+--------+----+-----+
你可以用这个重塑它:
df.explode($"word", $"excel"){case row =>
Seq(("Word", row.getInt(0)), ("Excel", row.getInt(1)))
}.select($"date", $"_1" as "app", $"_2" as "count")
进入这个:
+--------+-----+-----+
| date| app|count|
+--------+-----+-----+
|20150101| word| 3|
|20150101|excel| 4|
|20150102| word| 1|
|20150102|excel| 2|
+--------+-----+-----+
我想使用条形图作为可视化,来描述几个应用程序之一在每个日期 运行 的次数(为简单起见,将应用程序视为 excel , word, powerpoint等。例如,在3月15日,如果用户打开Excel一次,然后打开Word两次,则Word将显示高度为2,[=25=将显示高度为1 ] 等)。
可视化显示了一年的堆叠数据(365 个条),其中每个堆叠条对每个程序使用不同的颜色。有20个节目。数据系列是堆叠的 - 例如 Word(如果有描述)总是在底部,然后是 Excel,等等
执行此操作的传统方法是使用创建 365 行和 20 列(Word、Excel 等)的外连接,每一天的每一列都有一个整数值。这种技术有效,但对数据库的计算非常密集(更不用说密集 SQL),我想知道是否有人知道处理此问题的时间序列图表工具。 这是一个数据旋转问题:我想提取行中的数据,并让图表产品 assemble 柱状图。它需要从数据中读取 Data Series 名称,并在遇到新值时创建一个新的 Data Series。我实际上有数千个可能的程序,但每个图表不太可能需要描绘超过 20 个。
图表产品应该像这样工作: minDate=20150101, maxDate=20151231, interval=Day 然后数据是
20150315 "Word" 1
20150315 "Word" 1
20150315 "Excel" 1
20150316 "Powerpoint" 1
20150316 "Word" 1
或者,每一行可以是每个程序每天的总数:
20150315 "Word" 2
20150315 "Excel" 1
20150316 "Powerpoint" 1
20150316 "Word" 1
我正在使用带有 spark 和 scala 的 C3。我可以使用任何 javascript 库。
您要问的是如何将数据从宽格式重塑为长格式。在 Spark 中,您使用 DataFrame.explode
。假设你有这样的东西:
+--------+----+-----+
| date|word|excel|
+--------+----+-----+
|20150101| 3| 4|
|20150102| 1| 2|
+--------+----+-----+
你可以用这个重塑它:
df.explode($"word", $"excel"){case row =>
Seq(("Word", row.getInt(0)), ("Excel", row.getInt(1)))
}.select($"date", $"_1" as "app", $"_2" as "count")
进入这个:
+--------+-----+-----+
| date| app|count|
+--------+-----+-----+
|20150101| word| 3|
|20150101|excel| 4|
|20150102| word| 1|
|20150102|excel| 2|
+--------+-----+-----+