基于Python的科研論文配圖繪制(二)

Datawhale 8月 組隊學(xué)習(xí)活動
參考書籍:《科研論文配圖繪制指南—— 基于Python》,寧海濤著,人民郵電出版社
一、環(huán)境配置
上回說到,通過matplotlib庫,我們可以實現(xiàn)用Python實現(xiàn)基礎(chǔ)繪圖。同樣的,離不開環(huán)境的配置。關(guān)于個人的環(huán)境配置,依然是通過Anaconda創(chuàng)建獨立環(huán)境,并選擇了群友配置好的requirements.txt,再通過pip命令直接一步到位,非常感謝。
群友推薦環(huán)境:Python=3.8

二、初識Matplotlib
書中看到這個庫的時候其實是有種莫名的熟悉感,后來查了一下我原來的幾個環(huán)境,基本上都有它的出現(xiàn),包括CV和NLP,可以說它的應(yīng)用還是很廣泛的。

圖形元素
(1)基礎(chǔ)類元素:點、 線、文本、網(wǎng)格、標題、圖例等
(2)容器類元素:圖形、坐標圖形、軸和刻度
軸比例和刻度
(1)軸比例:規(guī)定了數(shù)值與給定軸之間的映射方式,即數(shù)值在軸上以何種方式進行縮放。
(2)刻度位置和刻度格式:規(guī)定了每個軸對象上刻度的位置與格式。
坐標系
(1)直角坐標系:即笛卡兒坐標系,用代數(shù)公式表達幾何 形狀的正交坐標系統(tǒng)。
(2)極坐標系:在平面內(nèi)由極點、極軸和極徑組成的坐標系統(tǒng)。可以與直角坐標系相互轉(zhuǎn)換,滿足x = r cos θ y = r sin θ。往往體現(xiàn)數(shù)據(jù)的周期性,即更好地展示數(shù)據(jù)的周期性變化。要求數(shù)據(jù)較為完整且有明顯的周期性特征。
(3)地理坐標系:可用地理投影有 Aitoff 投影、Hammer 投影、Lambert投影和 Mollweide 投影4種。
多字圖繪制
(1)subplot()函數(shù):對當前畫布對象添加單個子圖,且每次添加子圖都會 規(guī)定其位置順序。
(2)add_subplot()函數(shù):相對于subplot() 函數(shù),add_ subplot() 函數(shù)先產(chǎn)生 figure 對象。
(3)subplots()函數(shù):subplots(nrows, ncols, sharex, sharey)
其中nrows表示繪制子圖的行數(shù);ncols表示繪制子圖的列數(shù),行數(shù)與列數(shù)的乘積即繪制的總子圖數(shù);sharex可以用來設(shè)定是否共享X軸;sharey可以用來設(shè)定是否共享Y軸。該函數(shù)會返回一個坐標數(shù)組對象,該對象用于每個子圖的單獨繪制。
(4)axes()函數(shù):為當前畫布對象添加坐標圖形對象, 使其成為當前的坐標圖形對象。還包括對當前畫布對象中的坐標圖形對象添加顏色和大小映射等。
(5)subplot2grid()函數(shù):實現(xiàn)對不規(guī)則多子圖的繪制,可以在當前畫布對象上繪制網(wǎng)格。
(6)gridspec.GridSpec()函數(shù):gridspec.GridSpec(nrows, ncols, figure, left, bottom, right, top)
函數(shù)用于指定放置子圖的網(wǎng)格的幾何形狀。其中nrows表示網(wǎng)格中的行數(shù);ncols表示網(wǎng)格中的列數(shù);left、bottom、right和top是可選參數(shù),用于將子圖的范圍定義為圖形寬度或高度的一部分,設(shè)定網(wǎng)格在圖形中的具體位置。
(7)subplot_mosaic()函數(shù):subplot_mosaic(mosaic,…)
函數(shù)利用mosaic參數(shù)設(shè)置特定字符串符號進行子圖的視覺布局。
圖類型
包括plot()(線圖、點圖、帶連接 線的點圖)、scatter()(散點圖)、bar()/barh()(柱形圖 / 條形圖、堆積 柱形圖 / 堆積條形圖)、axhline()/ axvline()(垂直于 X/Y 軸的直線)、fill_between()(面積圖、填充圖)等。
三、代碼實驗


以上作為展示圖,提供的代碼與生成圖相互比對還是比較好看的,但是里面的大多數(shù)的函數(shù)內(nèi)容是需要在第三章及以后才能進行初步了解。
下面我們以subplot()函數(shù)為例做一個表,用的仍是參考資料。


相信能明顯看出來差異,這是因為我修改了一些參數(shù),大致如下:

其中“Arial”的原代碼對應(yīng)為“Times New Roman”,也就是字體設(shè)置
facecolor=“b”原代碼是facecolor="w",也就是背景顏色,b=blue,w=white
其他的一目了然了,不再贅述
可以說,在有現(xiàn)成框架下的任務(wù)就是調(diào)參了,比較簡單
但這門課重點還是在自定義編寫代碼繪制圖像,當然這就需要后面的函數(shù)代碼支撐了
(未完待續(xù))