3维(X,Y和Z)图使用D3.js
我在D3.js上search一个有3个维度(X,Y和Z)的图 。 请让我知道,如果有任何数据可视化网站 ,我可以find这样的graphics,或者有一个关于d3js.org
如果我错过了某种方式。
VividD和Lars Kotthoff链接的三维散点图可能就是你所要求的最好的例子,但是我会做出相反的暗示,也许你会问错误的问题。
试图模拟平面屏幕上的三个空间维度总是不完善的,并且使得难以读取数据。 但是,在D3中绘制三个不同的数据维度非常容易。 对于两个数据variables,使用水平和垂直布局,然后使用第三个variables的大小,形状,颜色或阴影。
如果所有的三个数据variables最好用连续数字表示,那么最好的方法是使用气泡散点图,其中三个显示维度是水平位置,垂直位置和气泡大小。
下面是一个例子,它还使用在线交互组件添加通过运动显示的第四个维度:
泡沫散点图 – 点击原始
你说你的三个维度是客户 , 产品和内容 。 我不知道什么样的价值“内容”(数字或类别),但我很确定“客户”和“产品”是类别。
下面是一个例子,其中两个分类维度用于布置表格,然后表格的每个单元格包含一个由第三个数字维度大小的圆圈。 如果您的第三个variables是一个类别,您可以使用一个形状来指示“客户”和“产品”的每个配对使用哪一种“内容”types(如果有的话):
泡沫matrix – 点击原始
这里是另外一个,第三个维度是用颜色而不是按大小来显示的。 颜色代表连续variables,但您可以轻松select一组高对比度颜色来表示类别:
彩色matrix – 点击原始
当然,一个普通的堆叠式条形图是另一种显示两个类别和数量的方法:
堆积条形图 – 点击原始
你不必停在三个数据variables。 如果两个数据variables都是您不介意分类的类别或数字,则可以使用“小数倍”方法绘制四个variables,您可以在其中创build表示分类variables的表格,然后重复其他两个variables在每个表格单元格内。
喜欢这个:
散点图matrix – 点击查看原图
或者这个(星期和星期是数据的两个维度,类别/数量是另外两个维度):
饼图小倍数 – 点击原始
我希望能给你很多想法
一种类似于你所寻求的是一个例子:
三维散点图
请注意,此示例使用了X3DOM ,这是一个相当新的尝试,用于标准化HTML中的3D渲染,而不是所有浏览器均支持。
在X3DOM中使用D3.js的一些附加testing示例:
X3DOM在callbacktesting中
D3 X3DOM事件testing
也searchD3 Google组上的X3DOM。
另一个有趣的方法是使用D3.js和Three.js,如下所示:
用three.js和d3.js显示3D轨迹
一般来说,D3.js更倾向于数据可视化,而不是科学可视化,这意味着它没有广泛的支持显示3D空间(除了显示地理三维数据,D3.js支持的很好,但你不需要它)。
例如(这个例子与你的例子没有直接关系,只是为了解释):D3提供了树的二维绘制algorithm,但没有提供任何3D树的放置和在2D屏幕上渲染这样的放置。
如果您不仅限于D3.js,也许您可以通过其他库来更轻松,更快速地实现相同的目标,这些库专门用于类似于您的目的。 例如,您可以使用Pre3D 。 看看这个例子 。 Pre3D不使用X3DOM,只是在2Dcanvas上进行简单的HTML渲染。 我认为它的3Dgraphics的animation(旋转)比第一个D3 / X3DOM的例子更平滑。
希望这会帮助你。
我能find的最好的例子(其中都非常简单)是:
Highcharts (3d散点图)
http://www.highcharts.com/demo/3d-scatter-draggable
Vis.js (各种3d选项,如条和点)
http://visjs.org/examples/graph3d/playground/index.html
只需提供x,y和z坐标,设置configuration如何你喜欢和你在笑。
它看起来像一个更正确地说“3D”出来的新例子。 http://bl.ocks.org/supereggbert/aff58196188816576af0
这是我做的改编: