python報錯TypeError: Input z must be 2D, not 3D的解決方法
目前,在使用python處理一個nc文件繪制一個風(fēng)場圖時,出現(xiàn)了以下報錯
![]()
雖然圖片畫出來了,但是很丑而且沒有理想的填充顏色!

但是不知道為啥,但是參考畫圖過程,分析這個其中的Z應(yīng)該指的繪制等高線中的這個函數(shù):matplotlib.pyplot contourf? 中使用到的Z!
而這個函數(shù)的用法為
coutour([X, Y,] Z,[levels], **kwargs)
在這里提出,matplotlib.pyplot contourf?是用來繪制三維等高線圖的,不同點是contour()是繪制輪廓線。而contourf()則會填充輪廓。除非有其他說明,否則兩個版本的函數(shù)是相同的。
| 參數(shù) | ||
| X,Y | 數(shù)組,可選 |
是在Z中的坐標(biāo)值。 當(dāng)X,Y,Z都是二維數(shù)組時,它們的形狀必須相同,若是一維數(shù)組,則X的長度為Z的列數(shù),Y的長度為Z的行數(shù),一般來說創(chuàng)建numpy.meshgrid() |
| Z | 類似矩陣 | 是繪制輪廓的高度值 |
| levels | int或類似數(shù)組,可選 | 用來確定輪廓線\區(qū)域的數(shù)量和位置 |
| aalpha | float,可選 | alpha混合值,介于0(透明)和1(不透明)之間。 |
| cmap | str或colormap,可選 | Colormap用于將數(shù)據(jù)值(浮點數(shù))從間隔轉(zhuǎn)換為相應(yīng)Colormap表示的RGBA顏色。用于將數(shù)據(jù)縮放到間隔中看?。 |
很顯然,在這個函數(shù)用法中,如果要畫出等高線,核心函數(shù)就是plt.contourf(),但在這個函數(shù)中輸入的參數(shù)是x,y對應(yīng)的網(wǎng)格數(shù)據(jù)以及此網(wǎng)格對應(yīng)的高度值,因此我們調(diào)用np.meshgrid(x,y)把x,y值轉(zhuǎn)換成網(wǎng)格數(shù)據(jù):
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 計算x,y坐標(biāo)對應(yīng)的高度值 def f(x, y): return (1-x/2+x**3+y**5) * np.exp(-x**2-y**2) # 生成x,y的數(shù)據(jù) n = 256 x = np.linspace(-3, 3, n) y = np.linspace(-3, 3, n) # 把x,y數(shù)據(jù)生成mesh網(wǎng)格狀的數(shù)據(jù),因為等高線的顯示是在網(wǎng)格的基礎(chǔ)上添加上高度值 X, Y = np.meshgrid(x, y) # 填充等高線 plt.contourf(X, Y, f(X, Y)) # 顯示圖表 plt.show()
于是我分析了我的代碼中的contourf中對應(yīng)的X,Y和Z,才發(fā)現(xiàn)果然問題出現(xiàn)在這里:
cp=ax.contourf(lon,lat,ws[i,::],zorder=0,transform=ccrs.PlateCarree(),cmap=cmap,levels=levels,extend='both')
這段代碼在完成三維數(shù)組的繪制時完全沒有問題,但是不巧的是,我這次繪制的是四維數(shù)組,而其中的ws[i,::]則未取定其中的兩維,使得該Z=ws[i,::],理論上來說屬于一個三維的數(shù)組,所以才會報錯。
而我們只需要把這個四維數(shù)組取定其中的兩維,使得該Z屬于一個二維數(shù)組即可,已知我的數(shù)據(jù)中第二維為我恰好需要將之取定為500hpa,所以將這句代碼改為:
cp=ax.contourf(lon,lat,ws[i,0,::],zorder=0,transform=ccrs.PlateCarree(),cmap=cmap,levels=levels,extend='both')
?霍!這不就畫出來了嘛!

?初次見面,請多關(guān)照!希望能解決你的一點小煩惱哦!
到此這篇關(guān)于python報錯TypeError: Input z must be 2D, not 3D的解決方法的文章就介紹到這了,更多相關(guān)python報錯解決方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python閉包之返回函數(shù)的函數(shù)用法示例
這篇文章主要介紹了 Python閉包之返回函數(shù)的函數(shù)用法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
Python @property及getter setter原理詳解
這篇文章主要介紹了Python @property及getter setter原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
對python讀取zip壓縮文件里面的csv數(shù)據(jù)實例詳解
今天小編就為大家分享一篇對python讀取zip壓縮文件里面的csv數(shù)據(jù)實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
詳解分布式系統(tǒng)中如何用python實現(xiàn)Paxos
提到分布式算法,就不得不提 Paxos 算法,在過去幾十年里,它基本上是分布式共識的代 名詞,因為當(dāng)前最常用的一批共識算法都是基于它改進(jìn)的。比如,F(xiàn)ast Paxos 算法、 Cheap Paxos 算法、Raft 算法、ZAB 協(xié)議等等。2021-05-05

