2D 数组到 3D 区域函数 - Python
2D array to 3D area function - Python
我正在尝试编写一个函数来创建 2D 输入 numpy 数组的 3D 表面,将行数和列数作为 X 和 X,将数组中的值作为 Z 值。我在 SO 上搜索了 3D 图的示例,并将此示例 (Plotting a 2d Array with mplot3d) 改编为以下函数:
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' object is not callable
您似乎没有正确使用 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)
我正在尝试编写一个函数来创建 2D 输入 numpy 数组的 3D 表面,将行数和列数作为 X 和 X,将数组中的值作为 Z 值。我在 SO 上搜索了 3D 图的示例,并将此示例 (Plotting a 2d Array with mplot3d) 改编为以下函数:
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' object is not callable
您似乎没有正确使用 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)