【发布时间】:2020-09-03 07:31:51
【问题描述】:
我知道最好的方法是尝试函数 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,),然后我将其重塑为 (20,10) 并使用 meshgrid:
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()
但它显示错误:
形状不匹配:无法将对象广播到单个形状
怎么解决,估计没问题……
【问题讨论】:
标签: python-3.x numpy matplotlib