【问题标题】:how to draw 3D figure when using list data in python在python中使用列表数据时如何绘制3D图形
【发布时间】: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


    【解决方案1】:

    你快到了。您将Z1 创建为形状(20, 10),但是meshgrid 创建XY 作为(10, 20)。解决办法是转置数组:

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

    【讨论】:

      猜你喜欢
      • 2011-01-18
      • 2019-11-30
      • 1970-01-01
      • 2015-10-03
      • 2023-04-03
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多