簡體   English   中英

2D數組到3D區域功能-Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM