python報(bào)錯(cuò)TypeError: Input z must be 2D, not 3D的解決方法
目前,在使用python處理一個(gè)nc文件繪制一個(gè)風(fēng)場圖時(shí),出現(xiàn)了以下報(bào)錯(cuò)
雖然圖片畫出來了,但是很丑而且沒有理想的填充顏色!
但是不知道為啥,但是參考畫圖過程,分析這個(gè)其中的Z應(yīng)該指的繪制等高線中的這個(gè)函數(shù):matplotlib.pyplot contourf? 中使用到的Z!
而這個(gè)函數(shù)的用法為
coutour([X, Y,] Z,[levels], **kwargs)
在這里提出,matplotlib.pyplot contourf?是用來繪制三維等高線圖的,不同點(diǎn)是contour()是繪制輪廓線。而contourf()則會(huì)填充輪廓。除非有其他說明,否則兩個(gè)版本的函數(shù)是相同的。
參數(shù) | ||
X,Y | 數(shù)組,可選 |
是在Z中的坐標(biāo)值。 當(dāng)X,Y,Z都是二維數(shù)組時(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ù)值(浮點(diǎn)數(shù))從間隔轉(zhuǎn)換為相應(yīng)Colormap表示的RGBA顏色。用于將數(shù)據(jù)縮放到間隔中看?。 |
很顯然,在這個(gè)函數(shù)用法中,如果要畫出等高線,核心函數(shù)就是plt.contourf(),但在這個(gè)函數(shù)中輸入的參數(shù)是x,y對(duì)應(yīng)的網(wǎng)格數(shù)據(jù)以及此網(wǎng)格對(duì)應(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 # 計(jì)算x,y坐標(biāo)對(duì)應(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ù),因?yàn)榈雀呔€的顯示是在網(wǎng)格的基礎(chǔ)上添加上高度值 X, Y = np.meshgrid(x, y) # 填充等高線 plt.contourf(X, Y, f(X, Y)) # 顯示圖表 plt.show()
于是我分析了我的代碼中的contourf中對(duì)應(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í)完全沒有問題,但是不巧的是,我這次繪制的是四維數(shù)組,而其中的ws[i,::]則未取定其中的兩維,使得該Z=ws[i,::],理論上來說屬于一個(gè)三維的數(shù)組,所以才會(huì)報(bào)錯(cuò)。
而我們只需要把這個(gè)四維數(shù)組取定其中的兩維,使得該Z屬于一個(gè)二維數(shù)組即可,已知我的數(shù)據(jù)中第二維為我恰好需要將之取定為500hpa,所以將這句代碼改為:
cp=ax.contourf(lon,lat,ws[i,0,::],zorder=0,transform=ccrs.PlateCarree(),cmap=cmap,levels=levels,extend='both')
?霍!這不就畫出來了嘛!
?初次見面,請(qǐng)多關(guān)照!希望能解決你的一點(diǎn)小煩惱哦!
到此這篇關(guān)于python報(bào)錯(cuò)TypeError: Input z must be 2D, not 3D的解決方法的文章就介紹到這了,更多相關(guān)python報(bào)錯(cuò)解決方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中報(bào)錯(cuò) “TypeError: ‘list‘ object is not callable”問題及解決
- Python中TypeError:unhashable?type:'dict'錯(cuò)誤的解決辦法
- Python?TypeError:?‘float‘?object?is?not?subscriptable錯(cuò)誤解決
- Python開發(fā)時(shí)報(bào)TypeError:?‘int‘?object?is?not?iterable錯(cuò)誤的解決方式
- 解決python錯(cuò)誤提示:TypeError: expected string or bytes-lik問題
相關(guān)文章
python3中編碼獲取網(wǎng)頁的實(shí)例方法
在本篇文章里小編給大家整理了一篇關(guān)于python3中編碼獲取網(wǎng)頁的實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)下。2020-11-11Python閉包之返回函數(shù)的函數(shù)用法示例
這篇文章主要介紹了 Python閉包之返回函數(shù)的函數(shù)用法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01Python @property及getter setter原理詳解
這篇文章主要介紹了Python @property及getter setter原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03對(duì)python讀取zip壓縮文件里面的csv數(shù)據(jù)實(shí)例詳解
今天小編就為大家分享一篇對(duì)python讀取zip壓縮文件里面的csv數(shù)據(jù)實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02詳解分布式系統(tǒng)中如何用python實(shí)現(xiàn)Paxos
提到分布式算法,就不得不提 Paxos 算法,在過去幾十年里,它基本上是分布式共識(shí)的代 名詞,因?yàn)楫?dāng)前最常用的一批共識(shí)算法都是基于它改進(jìn)的。比如,F(xiàn)ast Paxos 算法、 Cheap Paxos 算法、Raft 算法、ZAB 協(xié)議等等。2021-05-05