gpt4 book ai didi

python-3.x - 在python中使用列表数据时如何绘制3D图形

转载 作者:行者123 更新时间:2023-12-04 08:57:50 26 4
gpt4 key购买 nike

我知道最好的方法是尝试函数 Z = f(X, Y) 然后使用 X,Y,Z,但我的实际数据存储在一个列表中,这里我只是举一个简单的例子。
我想将 i、j 和 test_list 作为 X、Y、Z 坐标:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
test_list = []

for i in np.arange(1, 21):
for j in range(1, 11):
test_list.append(i * j)
所以首先 test_list 的形状是 (200,),然后我将它 reshape 为 (20,10) 并使用网格网格:
i = np.array(np.arange(1, 21))
j = np.array(np.arange(1, 11))

X, Y = np.meshgrid(i, j)

Z1 = np.reshape(test_list, (20, 10))

fig = plt.figure()
ax = plt.axes(projection='3d')

ax.plot_surface(X, Y, Z1, rstride=1, cstride=1,
cmap='viridis', edgecolor='none')

plt.show()
但是它显示错误:

shape mismatch: objects cannot be broadcast to a single shape


怎么解决呢,估计没问题。。。

最佳答案

您快到了。您创建 Z1如形状 (20, 10) ,但是 meshgrid创建 XY(10, 20) .解决方案是转置数组:

ax.plot_surface(X, Y, Z1.T, rstride=1, cstride=1,
cmap='viridis', edgecolor='none')

关于python-3.x - 在python中使用列表数据时如何绘制3D图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63718858/

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