gpt4 book ai didi

python - matplotlib 3D 图,plot_surface 黑色

转载 作者:行者123 更新时间:2023-11-30 22:55:32 27 4
gpt4 key购买 nike

我有以下数据: https://www.dropbox.com/s/u7ee09chaixw5vb/draw?dl=0

在python3中使用pickle保存,它只是一个二维的python列表,形式为z=[[],[],[]...[]]

我使用以下代码绘制 3D 图形,但它只显示黑色表面,为什么? xydict 可以从上面的文件加载:

    from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(0, len(xydict))
Y = np.arange(0, len(xydict[0]))
X, Y = np.meshgrid(X, Y)
Z = np.array(xydict).T


ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
# ax.contourf(X, Y, Z, zdir='z', offset=0, cmap=plt.cm.hot)
ax.set_zlim(0,1)

plt.savefig('plot3d_ex.png', dpi=480)

enter image description here

最佳答案

您的数据和您使用的参数都存在一些问题。您的表面形状极其不均匀,并且您为每一行请求一次 rstride。结果是您只能从跨步中看到黑色。

另一个问题是您的数据中似乎有 nan 值。如果您将数据限制为有效值并选择更好的步幅数字,您应该会获得更好的绘图。例如这个:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import pickle

with open('draw', 'rb') as pickle_file:
xydict = pickle.load(pickle_file)

fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(0, len(xydict))
Y = np.arange(0, len(xydict[0]))
X, Y = np.meshgrid(X, Y)
Z = np.array(xydict).T

ax.plot_surface(X[:,:-2], Y[:,:-2], Z[:,:-2], rstride=100, cstride=1, cmap=plt.cm.hot)
# ax.contourf(X, Y, Z, zdir='z', offset=0, cmap=plt.cm.hot)
ax.set_zlim(0,1)
plt.show()

,结果如下:

Plotting surface with very unequal shape in matplotlib

关于python - matplotlib 3D 图,plot_surface 黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380912/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com