?之前說要插播一期畫圖心得,所以本期就介紹一下一些常見圖的畫法~為了get文末gif的合成和倒放的小彩蛋,還簡單學了一個關于處理圖片的庫”
[emmmmm,比如這樣.......]
01
—
畫圖方法
下面詳細介紹直方圖的參數(shù)設置,其它類型的圖類似.
1. Figure 和 Subplots ?。⒍x一"
首先建立畫布,設置大小顏色,畫圖的時候有兩種方法,一種是通過添加子圖的方法(可以畫一幅或多幅畫),一種沒有運用子圖(畫布中只有一幅圖).
沒有用到子圖的方法:
畫柱狀圖就是一個函數(shù)(plt.bar),其實,線圖是(plt.plot),散點圖是(plt.scatter),箱線圖是(plt.boxplot)....
下面是用到子圖的方法:
可以看出,添加子圖之后,不過是將畫圖對象變成了某個特定的子圖,方法還是一致的(在一些參數(shù)設置上有稍微不同),當然如果你不設置subplots(2,2),而是設置成(1,1)或者不設置參數(shù),都只生成一個圖,和第一個圖的效果一樣.
2.關于 Figure 和 Subplots 的 Tips
在plt.figure中設置的背景色只限于輸出在屏幕上,savefig()里只有再一次設置背景色facecolor才可以在保存的圖片中加入背景色,此處顏色可以和開頭在plt.figure中設置的顏色不同.
plt.savefig( )必須寫在plt.show( ) 的前面,否則輸出是一個白板.
plt.subplots( )可以生成兩個對象,一個是figure,一個是subplots,不寫參數(shù)默認是1*1,所以寫參數(shù)的畫,一定要是兩個整數(shù).子圖的索引與列表索引方法一致.
關于subplots的參數(shù)中,重要的參數(shù)是sharex,sharey,如果各個子圖之間共享x和y軸,僅留下最下面和最左邊的坐標.
3.其他參數(shù)設置
以建子圖的方法為例,接下來對柱狀圖進行標簽,網(wǎng)格線,標題等等的完善(以下所有的用法在其他圖中一樣適用).
在ax.bar()的參數(shù)中添加柱的寬度width,bottom指的是y軸的開始位置(在stacked-bar堆積柱狀圖時常用到),顏色color, 邊界顏色edgecolor
修改x軸的刻度以及設置刻度標簽分別使用set_xticks()和set_xticklabels(),比如上圖中x軸的刻度是默認生成的,并沒有列出列表a的值,可以通過set_xticks()修改.set_xticks( )就是指明將刻度線放在哪些位置上(就是設置把哪幾個坐標點露出來),set_xticklabels就是在這些位置上加上標簽,y軸一樣的方法
設置坐標軸,例如將圖中右側和上側的邊框線去掉
添加x和y軸的標簽,使用set_xlabel( )和set_ylabel( )
添加網(wǎng)格線grid( ),可以設置線型,顏色,沿著x軸畫還是y軸畫網(wǎng)格線
添加圖例(legend( ))和標題(set_title( )),圖例的參數(shù)在ax.bar( )中通過label=(“ ”)傳入。
當然,你還可以更華麗一點,比如這樣:(在對子圖進行畫圖時ax.bar( ),傳入的color可以是一個顏色列表)
4.關于不同類型柱狀圖以及遇到的問題
比如畫了30條柱子,手動輸入set_xticklabels比較麻煩,其實可以讀取文件,將其寫入一個列表,這樣在設置刻度標簽時只需要傳入列表名稱就可以了.
關于堆疊柱狀圖,上面提到的把bottom參數(shù)設置成為第一組數(shù)據(jù)的y值就可以了,當然更準確一點,你還可以加上誤差線(就是第二組數(shù)據(jù)的y軸在第一組y軸的基礎上繪制).
關于并列柱狀圖,只需要保證他們的x坐標剛好相差一個寬度即可.
所以在畫圖的時候第一組數(shù)據(jù)的x減去寬度的一半,第二組數(shù)據(jù)加上寬度的一半就可以了.
想要在圖中加上文本或者對應的數(shù)值信息,可以用ax.text( )完成
[總結] 當然不同的圖中會涉及到獨有的參數(shù),比如點圖中設置點的形狀等等,不過就是舉一反三大同小異罷了~官方文檔上除了常見的幾類之外,還有熱圖,小提琴圖等等的詳細代碼~
[reference]matplotlib.pyplot官方文檔:https://matplotlib.org/index.html
02
—
pillow庫
接下來就簡單看一眼pillow庫,如何對圖像繼續(xù)壓縮、改變大小、切割一部分、換模式and改格式。
功能很很容易實現(xiàn)的,要是還不滿意,你甚至還可以加一點濾鏡(硬核P圖~)引入ImageFilter即可。
最后就是關于gif動圖的處理,gif 的拆分、倒放、合并~
合成圖片效果(隨手幾張圖emmmm):
倒放GIF效果圖(好魔性aaaaaa):
[reference]https://pillow.readthedocs.io/en/latest/
想看生物狗如何在編程中求生存?
歡迎關注我的公眾號:聽見我的voices