天天看點

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

編者按:發表一篇論文好比西天取經,就算有唐僧那樣的好導師,孫悟空那樣給力的合作者,不經曆九九八十一難也不可能得取真經。上一期的文章我們介紹了3個實用的latex工具,如果利用得當,可以顯著提高你寫論文的效率。如果說文字是一篇文章的血肉,那麼圖檔則是文章的筋骨,也可以說是一篇文章的門面。出彩的圖檔無疑會大大增加文章投中的機率。本公衆号計劃用一系列教程,教你如何利用python畫出國際頂級期刊那樣的論文資料圖。提醒,文末有福利。

常言說熟讀唐詩三百首,不會作詩也會吟。要想能随手畫出國際頂級期刊那樣的圖檔,對于新手而言首先建議在平時的文獻閱讀時,養成見到一些非常亮眼的圖檔能随手儲存的習慣。這樣在我們需要為自己的文章畫圖時,就能随時調取我們的寶庫,通過模仿來完成一副像模像樣的論文圖檔。

作為舉例,小編拿出以前從期刊中儲存的相對比較複雜的一副圖檔,帶領大家利用python去重複整個過程。

選取圖檔模版

本次選取的圖檔和複制出來的圖檔如下圖,其中上圖是從某期刊中截取的一幅比較典型的科研論文資料圖,下邊的圖是用python在jupyter notebook裡面重複出來的示意圖,由于小編不可能有圖檔原來的實驗資料,隻能通過線型自己構造一些資料以供展示。可以看到,除了一些字型,顔色和圖檔的大小等需要仔細調整的地方,我們比較完美的還原了左邊的資料圖。下面,就讓我們一步一步的跟随小編,看這幅圖是如何被重構出來的。

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...
matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

擷取實驗資料

本次示例隻需要用到numpy和matplotlib兩個python庫,需要提前導入

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

由于沒有真實的實驗資料,小編根據圖中情況自己構造了一些資料

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

得到了初始的圖檔

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

這個圖檔看起來和我們想要的相差很大,沒有關系,matplotlib是一個非常強大的繪圖庫,讓我們一點一點地去改進我們的圖檔

更改坐标軸

更改坐标軸的範圍

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

plt.xlim()和plt.ylim()語句可以讓我們改變x坐标軸和y坐标軸的範圍

更改坐标軸的刻度

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

ax是我們前面命名的一個畫闆對象的名字,如果需要改變坐标軸的刻度,可以通過ax.setxticks()設定x軸的刻度值,同時matplotlib允許我們通過tickparams()方法改變刻度值的一些屬性,例如刻度值的朝向,顔色,長度和粗細等。

更改線的顔色

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

ax.plot()裡面的color參數可以指定所畫圖線的顔色,顔色可以用0-1範圍内的RGB值來确定。有的時候我們不能确定一個圖線用什麼樣的顔色更協調,這時我們可以去觀摩别的優秀期刊上面的圖檔的配色,然後用取色器拾取其顔色,用在我們的圖檔中。

設定label

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

matplotlib可以嵌入latex公式,隻需要在 r'$$' 的兩個$符号中間寫入latex代碼就可以。這樣我們可以很友善的在圖檔的圖例、坐标軸名稱等地方嵌入latex公式

設定坐标軸名稱

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

增加散點圖

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

到此為止,我們的主圖已經描繪的差不多了

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

接下來需要的就是分别按照上面描述的方法,把兩個子圖分别畫出來

繪制子圖一

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

在繪制子圖的過程中,我們用ax1.setxticklabels()來設定刻度值的内容,刻度值并不一定顯示實際的數值,而可以顯示字元串樣式的内容。這樣就友善了我們自定義一些非正常的坐标刻度值。同時,我們用ax_1.text()來自定義一些圖檔内的文字。

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

繪制子圖二

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

與子圖一的繪制相似,子圖二的繪制也比較簡單。

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

結合主圖和子圖

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

在将三幅圖結合為一幅圖的過程中,我們使用fig.add_axes()指令來為圖檔添加子圖,其中該方法中的四個參數分别是該子圖的兩個起始地點和寬、高度。通過調整這四個參數我們可以讓子圖到達我們想要的位置。

最終的效果圖如圖所示。

matplotlib 顯示批量圖檔_收藏|如何利用python畫出令編輯眼前一亮的論文圖檔(一)...

matplotlib是一個有很強自定義功能的python繪圖庫,它幾乎可以讓我們定義任意的東西,畫出各種各樣的圖形,感興趣的同學可以去下面的官網上面檢視官方示例。https://matplotlib.org/3.1.1/tutorials/introductory/sample_plots.html

但同時,這種自定義太強的功能也給我們帶來很多困擾,哪怕我們隻想實作一個比較簡單的功能,如果對matplotlib這個庫不是那麼熟悉的話,也需要查找半天。而如果畫圖者本人沒有很高的審美的話,就很容易畫出一些看上去不是很協調的圖檔。好在世界上同樣有人想到了這一點,他們開發出了plotly這一個能很友善的畫出非常美觀圖形的庫和mpltex這個号稱可以畫出出版社級别圖檔的庫,這兩個功能強大的庫我們将于接下來的系列教程中予以介紹~

背景回複

畫圖1

可以獲得上述例子源碼連結!

記得點選右下 在看 支援我們哦!

繼續閱讀