【发布时间】:2015-07-14 19:00:42
【问题描述】:
我有这个数据集:
tick ID Name val1 val2 val3 val4
0 1 Name1 0.7 0.1 0.2 0.1
1 2 Name2 0.8 0.1 0.1 0.1
2 3 Name3 0.4 0.1 0.2 0.3
3 4 Name4 0.6 0.1 0.2 0.1
4 1 Name1 0.7 0.1 0.2 0.1
5 2 Name2 0.8 0.1 0.1 0.1
6 3 Name3 0.4 0.1 0.2 0.3
7 4 Name4 0.6 0.1 0.2 0.1
我已经用 crossfilter 和 dc.js 可视化了所有内容,除了一张图表。我想要 val1、val2、val3 和 val4 列的平均值。
我已经用 dc.js 可视化了这张地图。数据中的 ID 是图像中的一个段。刻度是圆形的,例如在刻度 2 处 id 为 1 的对象具有值 0.7、0.1、0.2 和 0.1。所以平均数据应该连接到段。例如,当只选择 ID 为 1 的蓝色对象时,它应该显示当前选择的平均值:
tick ID Name val1 val2 val3 val4
0 1 Name1 0.7 0.1 0.2 0.1
4 1 Name1 0.7 0.1 0.2 0.1
如果我选择 ID 为 2 的第二个对象,它应该显示两个段的平均值:
tick ID Name val1 val2 val3 val4
0 1 Name1 0.7 0.1 0.2 0.1
1 2 Name2 0.8 0.1 0.1 0.1
4 1 Name1 0.7 0.1 0.2 0.1
5 2 Name2 0.8 0.1 0.1 0.1
也许我可以在饼图中显示两个对象的平均值。在哪里我可以看到四个类 val1、val2、val3 和 val4 的平均值。所以我想将它们设置为如下关系:
Sum val1 3
Sum val2 0.4
Sum val3 0.6
Sum val4 0.4
Sum all 4.4
所以类在饼图上的大小如下:
val1 3/4.4 = 0.68 = 68 percent
val2 0.4/4.4 = 0.090 = 9 percent
val3 ...
val4 ...
我怎样才能做到这一点,因为这是唯一不起作用的可视化。
【问题讨论】:
-
这个问题在这里可能会有所帮助:stackoverflow.com/questions/21519856/…
-
您好,感谢您的回复。我从链接检查了解决方案,但存在问题。在解决方案中,他使用第一行来定义维度,在我的情况下是 val1, val2.... 但问题是我在列中没有这些值,它们仅在第一行中。有没有不重新组织数据的解决方案?
-
如果可以的话,我认为最好的解决方案是重新组织数据。我目前不知道其他方法,但也许您可以等待其他人评论/回答
-
我很困惑为什么这不仅仅是取四个总和和四个平均值,只是比@Ben 链接的答案稍微复杂一些。但是,您的示例输出根本没有显示任何平均值,所以我很困惑您要做什么
-
也许你的意思是聚合好了,你只需要用fake group把列变成组值?
标签: javascript d3.js dc.js crossfilter