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

发布于 2024-11-26 17:12:03 字数 253 浏览 2 评论 0原文

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

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

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

我想绘制一个 3D 数据立方体来显示该点的位置以及每个点的成比例的颜色到该点的标量场 t。

我尝试使用 histogramdd 但没有成功。

I was wondering if there's a way to plot a data cube in Python. I mean I have three coordinate for every point

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

And for every point I have a scalar field t(x,y,z)

I would like to plot a 3D data cube showing the position of the point and for every point a color which is proportional to the scalar field t in that point.

I tried with histogramdd but it didn't work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

硪扪都還晓 2024-12-03 17:12:03

您可以使用 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 绘图的速度可能会很慢。在这些情况下,我曾经使用 Gnuplotgnuplot.py。 Gnuplot 也可以直接用作子进程,如此处此处

You can use matplotlib.
Here you have a working example (that moves!):

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()

enter image description here

You probably have to customize the relation of your scalar values with the corresponding colors.
Matplotlib has a very nice look but it can be slow drawing and moving these 3D drawings when you have many points. In these cases I used to use Gnuplot controlled by gnuplot.py. Gnuplot can also be used directly as a subprocess as shown here and here.

无人问我粥可暖 2024-12-03 17:12:03

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

Another option is Dots plot, produced by MathGL. It is GPL plotting library. Add it don't need many memory if you save in bitmap format (PNG, JPEG, GIF and so on).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文