如何在Python中绘制数据立方体

3

我想知道是否有一种方法可以在Python中绘制数据立方体。我的意思是对于每个点,我有三个坐标。

x=part.points[:,0]
y=part.points[:,1]
z=part.points[:,2]

对于每个点,我都有一个标量场 t(x,y,z)。

我想绘制一个三维数据立方体,显示点的位置并为每个点显示一种颜色,该颜色与该点中的标量场 t 成比例。

我尝试使用 histogramdd,但它没有起作用。


谷歌:http://old.nabble.com/4D-Scatter-Plot-td31978523.html - Katriel
http://pyx.sourceforge.net/examples/3dgraphs/color.html - 这个可能有效吗? - Damian
2个回答

10
你可以使用matplotlib。 这里有一个可以移动的工作示例:
import random
from matplotlib import pyplot
from mpl_toolkits.mplot3d import Axes3D

mypoints = []
for _ in range(100):
    mypoints.append([random.random(),    #x
                    random.random(),     #y
                    random.random(),     #z
                    random.randint(10,100)]) #scalar

data = zip(*mypoints)           # use list(zip(*mypoints)) with py3k  

fig = pyplot.figure()
ax = fig.add_subplot(111, projection='3d')

ax.scatter(data[0], data[1], data[2], c=data[3])
pyplot.show()

输入图像描述

你可能需要自定义标量值与相应颜色之间的关系。Matplotlib 的外观很好,但是当你有许多点时绘制和移动这些 3D 绘图可能会很慢。在这种情况下,我经常使用由 Gnuplot 控制的 gnuplot.py。如此处此处所示,也可以直接将 Gnuplot 用作子进程。


谢谢!除了明显的x和y标签之外,我可以问一下如何添加z标签吗?我尝试使用pyploy.zlabel("my_label"),但它没有起作用。此外,如果点太多,这段代码会卡住。如何为它们应用高斯滤波器以使其平滑,并仍然拥有漂亮的3D图? - Brian
另外一个问题。我怎么样可以给图表添加一个标题,并且添加一个颜色条展示颜色的图例? - Brian
ax.set_zlabel('Z')。ax.set_title('Mi Title')。你可以尝试其他方法,或者向SO提问。 - joaquin

0

另一个选择是由MathGL生成的Dots图。它是GPL绘图库。如果您以位图格式(PNG,JPEG,GIF等)保存,则不需要太多内存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接