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 PyAutoGUI模塊控制鼠標(biāo)和鍵盤實現(xiàn)自動化任務(wù)詳解
這篇文章主要介紹了Python PyAutoGUI模塊控制鼠標(biāo)和鍵盤實現(xiàn)自動化任務(wù),結(jié)合實例形式詳細(xì)分析了pyautogui模塊的安裝、導(dǎo)入以及針對鼠標(biāo)與鍵盤的各種常見響應(yīng)操作實現(xiàn)技巧,需要的朋友可以參考下2018-09-09
python實現(xiàn)在函數(shù)中修改變量值的方法
今天小編就為大家分享一篇python實現(xiàn)在函數(shù)中修改變量值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
詳解Python中的偏函數(shù)(Partial Functions)
Python中的偏函數(shù)是來自函數(shù)式編程的一個強大工具,它的主要目標(biāo)是減少函數(shù)調(diào)用的復(fù)雜性這個概念可能起初看起來有點困難理解,但一旦你明白了它的工作方式,它可能會成為你的編程工具箱中的重要組成部分,文中有相關(guān)的代碼介紹,需要的朋友可以參考下2023-06-06
Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務(wù)端功能示例
這篇文章主要介紹了Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務(wù)端功能,結(jié)合實例形式分析了Python基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務(wù)端數(shù)據(jù)發(fā)送與接收相關(guān)操作技巧,需要的朋友可以參考下2018-03-03

