Python氣象繪圖教程(六)

2021-02-13 氣象學家

本節提要:實用的matplotlib修改技巧

一、複習回顧

前面已經講完了基礎入門、折線圖與散點圖。坐標軸刻度的修改、圖例的設定與實用的參數。

這些技巧都是在我仿製和自己畫圖時的總結,完全可用。其中一部分來自氣象家園網站的現成帖子。

A、使用savefig(''picture name'')保存圖像文件時,保存的圖片是空白的。

解決辦法:第一種,將savefig命令移動至plt.show()命令之前。第二種,查看命令是否為fig.savefig(),一般來說,使用了figure,ax命令後,plt.savefig()需要更改為fig.savefig()。

B、創建單子圖或多子圖時,標籤刻度字體過大互相重疊遮擋。

像這樣重疊,在matplotlib中,各部分的可調節性和靈活性是非常高的,這雖然在繪製大量圖片時會使得程序繁雜可讀性低,但是修改出來的圖片比原來的要精美。

這種圖要怎麼修改呢?

在軸刻度欄,無論是默認的刻度還是經緯刻度,都可以使用字典的方式進行調節。在前面的折線圖坐標中,我們已經引入了一部分:

當時我們就引用字典的方法修改了顏色和字體大小。

font={'size':20,'color':'red'}ax.set_xlabel('時間',fontdict=font)ax.set_ylabel('氣溫 ℃',fontdict=font)

那麼,在引入了經緯度標籤之後,仍然可以通過字典的方式調節:

gl.xlabel_style={'size':10}gl.ylabel_style={'size':10}

這樣就美觀了。在matplotlib中,絕大部分你能想到的細節都能通過字典的方式進行調節,具體方式可自行深入探索。

C、色條的細節修改

色條是在繪製等值線填色圖時非常重要的輔助。同樣的,按照前面的介紹,他也是能夠使用字典的方式修改的,就拿上一幅圖舉例,我們給色條添加藍色的名稱,並將其刻度字體放大。

cb=plt.colorbar(cs,shrink=0.5)font={'size':50,'color':'b'}cb.set_label('溫度 \℃',fontdict=font)cb.ax.tick_params(labelsize=20)

當然我修改的有點誇張,不美觀了,字典的原理如此。所謂萬法皆通,在matplotlib中,你能想到的和字體大小顏色之類有關的基本能通過字典解決。

D、關於中文和負號的解決辦法

當我們繪圖時,新手很可能出現下面這種情況:

這是軟體的問題,需要在前面添加上:

plt.rcParams['font.sans-serif']=['SimHei']

這樣就能解決中文輸出的問題。大部分新手能找到的教程也是這樣。是不是只能使用這樣的字體呢?答案是否定的,可通過兩個實例來驗證:

plt.rcParams['font.sans-serif']=['LiSu']

plt.rcParams['font.sans-serif']=['STXingkai']

上面一個修改為隸書,一個為行楷。可以看出,字體是可以修改的,具體可以修改的字體如下圖所示(圖源張若愚《Python科學計算》):

E、多子圖繪製時,出現colorbar和子圖擁擠錯誤排版的情況

前面已經介紹過matplotlib中添加子圖的多種多樣的方法,例如subplot、subplots、subplot2grid等方法,在大多數時候能滿足需求,但是添加色條時問題多多。

這種是默認的添加色條的辦法,可以看出,在使用subplot等添加色條時存在排版問題。有的同學可能提出我將色條橫著放在最下面,不就解決了,但是這樣的方式只能改變第四張圖:

orientation='horizontal'(使色條橫向)

所以,我們推薦使用簡書上ID:摸魚咯的解決方式,使用axes[i,j,m,n]的命令進行設置。

ax1 = fig.add_axes([0.019,0.60,0.5,0.5],projection=proj)ax2 = fig.add_axes([0.6,0.60,0.5,0.5],projection=proj)ax3 = fig.add_axes([0.019,0.08,0.5,0.5],projection=proj)ax4 = fig.add_axes([0.6,0.08,0.5,0.5],projection=proj)ax5=fig.add_axes([0.28, 0.03, 0.5, 0.017])

這樣其實建立了五個子圖,前四個為畫四個月圖像,最後一個為存放色條。

axes[i,j,m,n]內部參數的具體意思為:i,j代表本子圖在figure中位置,表示距離figure左邊和下邊的距離。m,n為本子圖的形狀大小。具體參數需要讀者在繪製過程中微調。

F、繪製等值線填色圖時出現問題

新手會出現讀取了數據報錯的問題:

lon=df['lon']#經度lat=df['lat']#緯度tem=df['temp']ax.contourf(lon,lat,tem,levels=np.arange(6,9,0.3))

TypeError: Input z must be a 2D array.

這是因為中國能下載到的一般是站點數據,站點數據不能再等值線填色圖中使用,需要對整個數據進行網格化,站點插值之後才能進行等值線的描繪。具體請參考優酷上OLDLee老師的教學視頻。

olon=np.linspace(108,111,110)olat=np.linspace(29,32,110)olon,olat=np.meshgrid(olon,olat)tem=df['temp']func=Rbf(lon,lat,tem,function='linear')tem_new=func(olon,olat)cs= ax.contourf(olon,olat,tem_new,levels=np.arange(6,9,0.3))

下期預告:地理信息的添加——Cartopy介紹。

往期回顧:

Python氣象繪圖教程(一)

Python氣象繪圖教程(二)

Python氣象繪圖教程(三)

Python氣象繪圖教程(四)

Python氣象繪圖教程(五)

Python氣象繪圖教程特刊(一)

相關焦點

  • Python氣象繪圖教程(三)
    官網給出了很多符號樣式,可挑選你覺得好看的符號樣式即可(雖然我覺得沒幾個好看的):氣象上常用的有三線圖、五線圖。三線圖主要是日常氣象分析的氣壓、氣溫、溼度(或其他繪圖量)有時還會繪製降水柱狀圖。五線圖主要是展示春夏秋冬和年平均的變化關係。一張圖如果有更多的線條會使得界面凌亂不堪,不能用於科學分析。
  • 利用Python對WRFout文件進行簡單繪圖
    還有這樣:關於namelist,其他的注意事項在言深深大佬的教程裡說得很詳細了,網絡上也有很多補充的文檔,就是在這個地方需要注意一下:我比較習慣用圓柱投影來畫圖(cartopy裡是PlateCarree()這個命令),所以是這麼寫namelist
  • Python氣象繪圖教程(十四)
    所謂一圖敵千言,在氣象科研領域,圖表是進行數據可視化的利器,而圖例是幫助閱讀者理解圖表信息的關鍵。繪圖庫matplotlib中專門闢出一個命令——Legend進行設置。下面首先介紹其常用關鍵字參數。
  • 【教程】組學研究,用python快速實現PCA分析和繪圖
    下面可以跟著小鹿一起get~~PCA分析與計算機語言相結合的應用及繪圖。助力您在代謝組學,蛋白組學研究分析中的難題。,一看您就明白~~設有m條n維數據:1)將原始數據按列組成n行m列矩陣X;2)將X的每一行(代表一個屬性欄位)進行零均值化,即減去這一行的均值;3)求出協方差矩陣;4)求出協方差矩陣的特徵值及對應的特徵向量;5)將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣P;6)Y=PX即為降維到k維後的數據;python
  • Python氣象繪圖教程(四)
    plt.figure()   ###準備畫布###                 ③讀取數據                 ④ax=fig.add_subplot()   ###添加作圖區###                 ⑤繪製圖形                 ⑥plt.show()   ###展示圖形###畫布figure及其參數、
  • 「繪圖,讓科學生動起來」:Python-matplotlib繪圖(專題一)python環境搭建篇
    筆者寄語:各位好,從今天開始,「科學是什麼東東」將推出一個全新系列專題:採用時下最流行的python計算機設計語言,對其中的一個第三方繪圖庫,即matplotlib繪圖庫進行講解,並將其強大的繪圖與編程功能應用到數學函數,化學,地理,物理,教育等諸多領域。
  • python的繪圖利器--海龜繪圖turtle
    作為你學習python的第一個程序,樹哥決定直接來一個實戰乾貨程序:利用海龜turtle來畫一個奧運五環。這樣就既可以理解庫的概念和使用,又可以理解程序的基本概念。這個語句是個固定格式,有這句話畫完圖,繪圖窗口還保留,如果沒有這句話,繪圖窗口就直接關閉了,所以初期都加上就好了。
  • Excel學習教程 & Python全套教程
    各位小夥伴們,今天給大家分享兩個非常有用的資料:Excel學習教程和Python全套教程。
  • 如何用matplotlib繪圖呢?
    使用過python做數據分析的小夥伴都知道,matplotlib是一款命令式、較底層、可定製性強、圖表資源豐富、簡單易用、出版質量級別的python 2D繪圖庫。matplotlib算是python繪圖的元老級庫,類似程式語言裡的C語言。
  • 小白開始學Python最著名的繪圖庫
    今天就先了解一下Python中最著名的繪圖庫Matplotlib,看看到底如何做出漂亮的圖有的小夥伴不解,為啥叫它鼻祖的,因為其他的可視化的數據包都是從它演變而來,二次封裝的。Matplotlib本身是免費而且開源的,貌看一下感覺非常複雜,API超級多。
  • Python機器學習·微教程
    該教程共分為11小節。在這個教程裡,你將學會:如何處理數據集,並構建精確的預測模型使用Python完成真實的機器學習項目這是一個非常簡潔且實用的教程,希望你能收藏,以備後面複習!接下來進入正題~這個微課程適合誰學習?如果你不符合以下幾點,也沒關係,只要花點額外時間搞清楚知識盲點就能跟上。
  • MNE-Python的簡易中文教程簡單入門
    MNE-Python的下載安裝很簡單,具體可參考https://mne.tools/stable/install/mne_python.html#installing-python。Raw對象也自帶有繪圖方法,我們使用plot_psd()和plot()實現一些可視化功能。並且在交互式Python會話中,plot()是交互式的,允許一些編輯操作。我們在MNE中實例化一個ICA對象,調用其fit()方法傳入數據即可。同時ICA對象的exclude屬性提供了去除成分的傳參方案,plot_properties()提供了可視化的功能。
  • Python 繪圖庫 Matplotlib 入門教程
    (點擊上方公眾號,可快速關注)來源:強波的技術博客qiangbo.space/2018-04-06/matplotlib_l1/Matplotlib是一個Python語言的2D繪圖庫如果你已經有了本文的運行環境,將上面的代碼保存到一個文本文件中(或者通過Github獲取本文的源碼),然後通過下面的命令就可以在你自己的電腦上看到上面的圖形了:python3 test.py 注1:後面的教程中,我們會逐步講解如何定製圖中的每一個細節。例如:坐標軸,圖形,著色,線條樣式,等等。
  • 只要十分鐘,python繪圖神器turtle了解一下?
    python的強大在於它有許多的強大的庫,turtle就是其中之一。利用turtle,你可以進行交互式的繪畫,作為一個藝術白痴,想要畫一幅畫可能很困難,但是利用python的turtle庫,只需要幾行代碼你就能實現繪畫。
  • python教程
    python視頻教程     文章底部留言 序號 給您發送視頻教程連結或者加微信 bigzql 索要Python
  • 氣象編程 | 中國地圖shp文件和Python繪圖實例
    gmt-china.org/data/MeteoAI(zhangqibot)省級行政邊界含九段線https://cloud.tencent.com/developer/article/1484356整理後的shp文件連結: https://pan.baidu.com/s/1Di_mEd27LQ343mXdmZxdQg 提取碼: nkdePython繪圖示例
  • 全套免費的3D科研繪圖教程就在這裡!
    友情提示:Ⅰ、所有教程均為原創,未經允許不得擅自挪作他用;Ⅱ、每期連結的圖片還註明了教程中使用的主要方法和知識點(見下方圖片);Ⅲ、教程難度由簡入深,所用方法不一定是最便捷的有豐富的科研繪圖和培訓經驗,聯繫方式——QQ:244308002    WeChat:memorylhd更多問題可在微信後臺留言,或者加入我們的QQ學習交流群3D科研繪圖學習交流
  • python推薦 | 面向地學領域的Python庫匯總
    •csv, xlsx等格式:pandas你值得擁有,無論是氣象還是其他領域的類似格式數據,使用pandas可以解決你的常用操作。•HDF格式:pandas和h5py可以處理hdf5格式,PyHDF可以處理hdf4格式。
  • 第350期博士生創新論壇 | Python信息處理與繪圖
    浙大AI俱樂部聯合浙江大學博士生會給大家送教程啦!Python語言是目前推動數據科學如人工智慧、大數據、金融分析和機器學習算法實現等最為強大的動力引擎。通過此次活動,希望參與的同學能夠入門Python,並且利用Python結合機器學習相關算法對於數據、文本信息進行處理,同時,也能夠進行繪圖,從而在論文寫作過程與實驗過程中能夠使用。本次活動是博創論壇中少有的技能提升營,我們將從學生角度出發,著重新手教學!
  • Python微課 | Seaborn——Python優雅繪圖(上)
    Matplotlib:Python基礎繪圖包(本課中輔助繪圖)本節課內容與目的:通過官方文檔(Document)裡的現成示例學習Seaborn包,熟悉Seaborn繪圖背景的調節。示例2:男性女性用餐時間和用餐價格可視化學習內容:ggplot背景風格繪圖,柱狀圖。