问题描述
我想使用Python中的matplotlib在4D中可视化大量的测量值。 目前,我的变量是以这种方式排列的:
x = np.array(range(0,v1))
y = np.array(range(0,v2))
z = np.array(range(0,v3))
我有C,它是一个3D数组,其中包含先前变量的每种组合的测量值。因此它的尺寸为v1*v2*v3
。
当前,我使用contourf
函数可视化我的测量,并为每个z值绘制该图。这将产生3D等高线图,即2D +彩色图。现在,我要组合所有变量,并查看4D尺寸(x,y,z和与测量值相对应的颜色)的测量值。在python中最有效的方法是什么?
解决方法
关于@Sameeresque 的回答,我认为问题与这个 3D 图形有关:
import numpy as np
import matplotlib.pyplot as plt
# only for example,use your grid
z = np.linspace(0,1,15)
x = np.linspace(0,15)
y = np.linspace(0,15)
X,Y,Z = np.meshgrid(x,y,z)
# Your 4dimension,only for example use yours
U = np.exp(-(X/2) ** 2 - (Y/3) ** 2 - Z ** 2)
# Creating figure
fig = plt.figure()
ax = plt.axes(projection="3d")
# Creating plot
ax.scatter3D(X,Z,c=U,alpha=0.7,marker='.')
plt.show()
,
可以这样获得轴上带有(x,y,z)且第四个是颜色的4D图:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
x = np.array(range(0,50))
y = np.array(range(0,50))
z = np.array(range(0,50))
colors = np.random.standard_normal(len(x))
img = ax.scatter(x,z,c=colors,cmap=plt.hot())
fig.colorbar(img)
plt.show()