[英]2D array to 3D area function - Python
我正在嘗試編寫一個函數,該函數創建2D輸入numpy數組的3D曲面,其行和列數分別為X和X,並且數組中的值為Z值。 我在SO上搜索了3D繪圖的示例,並將此示例( 使用mplot3d繪制2d數組 )修改為以下函數:
def area_plot(a):
rows = range(a.shape[0])
columns = range(a.shape[1])
hf = plt.figure()
ha = hf.add_subplot(111, projection= "3d")
X, Y = np.mgrid(rows, columns)
ha.plot_surface(X,Y, arr)
plt.show()
示例數組是這樣的:
arr = np.array([(1,1,1,2,2,3,2,2,1,1,1),
(1,1,1,2,3,3,3,2,1,1,1),
(1,1,1,2,3,10,3,2,1,1,1),
(1,1,1,2,3,3,3,2,1,1,1),
(1,1,1,2,2,3,2,2,1,1,1)])
area_plot(arr)
但是我收到此錯誤,並且我不知道如何解決。 謝謝!
TypeError:“ nd_grid”對象不可調用
看來您沒有正確使用np.mgrid
。 見下文:
import matplotlib.pylab as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
def area_plot(a):
rows = range(a.shape[0])
columns = range(a.shape[1])
hf = plt.figure()
ha = hf.add_subplot(111, projection= "3d")
X, Y = np.mgrid[0: len(rows), 0:len(columns)]
ha.plot_surface(X,Y, a)
plt.show()
arr = np.array([(1,1,1,2,2,3,2,2,1,1,1),
(1,1,1,2,3,3,3,2,1,1,1),
(1,1,1,2,3,10,3,2,1,1,1),
(1,1,1,2,3,3,3,2,1,1,1),
(1,1,1,2,2,3,2,2,1,1,1)])
area_plot(arr)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.