还在对Matplotlib繁琐的图层设置感到烦恼!?快来看看这个Python绘图工具包吧
是不是被matplotlib繁瑣繪圖屬性設(shè)置搞得一臉懵?是不是因常常記不住某一個(gè)圖層設(shè)置函數(shù)而被迫看又長(zhǎng)又枯燥的API文檔?又或者是不是在面對(duì)多個(gè)matplotlib子圖時(shí)寫(xiě)了大量的循環(huán)代碼來(lái)設(shè)置屬性?最后還是不是希望只精通一個(gè)Python繪圖包就可以把二維、空間等類(lèi)型圖表繪制方法都掌握??此外,還有好多無(wú)奈和吐槽,我不知道你們是不是這樣?反正以上列出的幾點(diǎn)就是我在使用matplotlib自定義繪制圖表時(shí)最大的感觸了,當(dāng)然,本期推文不是來(lái)吐槽的,是來(lái)為大家提供好的解決方法的。
下面就介紹下今天的主角-- ProPlot。說(shuō)真的!當(dāng)我剛開(kāi)始發(fā)現(xiàn)這個(gè)包時(shí):“嗯?不錯(cuò),logo和matplotlib很像”,可是,當(dāng)我在熟悉大多數(shù)和經(jīng)常使用matplotlib繪圖時(shí),回來(lái)再看這個(gè)工具包時(shí):“我*,真香!!我之前干了啥?趕快用起來(lái)!”。
本期推文將告訴你如何使用更少的代碼實(shí)現(xiàn)繁瑣的自定義繪圖需求,當(dāng)然,也是符合出版需求的配圖,主要內(nèi)容如下:
ProPlot 庫(kù)介紹
ProPlot 實(shí)例演示
ProPlot 庫(kù)介紹
使用Python-matplotlib繪制圖表時(shí),默認(rèn)的顏色以及格式主題只能幫助我們熟悉繪圖函數(shù),而想要設(shè)計(jì)出優(yōu)秀的可視化作品(無(wú)論是出版級(jí)別還是略帶藝術(shù)氣息) 都需要熟悉大量的繪圖函數(shù),如顏色、刻度、軸脊、字體等,當(dāng)涉及繪制多子圖時(shí),這些操作都會(huì)耗費(fèi)我們大量的精力,不僅導(dǎo)致編寫(xiě)代碼冗長(zhǎng),而且還易出錯(cuò),具體可以查看下我之前的文章Python-matplotlib 學(xué)術(shù)散點(diǎn)圖 EE 統(tǒng)計(jì)及繪制 和 Python-matplotlib 橫向堆積柱狀圖繪制。除此之外,如果你每天都需要使用matplotlib繪圖且經(jīng)常需要對(duì)圖表進(jìn)行美化,那Proplot 繪圖包就太適合你了,也不要擔(dān)心會(huì)不適應(yīng),人家可是對(duì)matplotlib進(jìn)行高度封裝,極大簡(jiǎn)化繪圖函數(shù)而已。下面我們就其安裝和主要使用方法進(jìn)行簡(jiǎn)單介紹,如果大家想要詳細(xì)了解,可以去官網(wǎng)哦。
安裝
我們直接可是使用pip或者conda直接進(jìn)行安裝即可,
#for?pip pip?install?proplot #for?conda conda?install?-c?conda-forge?proplot當(dāng)然,由于版本的不斷更新,你還可以使用如下代碼進(jìn)行更新處理:
#for?pip pip?install?--upgrade?proplot #for?conda conda?upgrade?proplotformat()簡(jiǎn)化代碼
Proplot 繪制圖表不需要像matplotlib那樣對(duì)每一個(gè)繪圖屬性進(jìn)行設(shè)置,其提供的format() 函提供一次更改所有設(shè)置的格式化方法。我們首先舉個(gè)簡(jiǎn)單的例子,如下:
使用matplotlib 繪制
ProPlot繪制
從這簡(jiǎn)單的例子中就可以看出Proplot的簡(jiǎn)便性了。
A-b-c 多子圖序號(hào)添加
除了上面 format() 大大縮減代碼量,我們?cè)诮榻B了我認(rèn)為比較方便的繪圖方法-多子圖序號(hào)自動(dòng)添加。具體的例子如下:
#?樣本數(shù)據(jù) import?numpy?as?np state?=?np.random.RandomState(51423) data?=?2?*?(state.rand(100,?5)?-?0.5).cumsum(axis=0)import?proplot?as?plot fig,?axs?=?plot.subplots(ncols=2) axs[0].plot(data,?lw=2) axs[0].format(xticks=20,?xtickminor=False) axs.format(abc=True,abcstyle='(A)',abcsize=12,abcloc='ul',suptitle='Abc?label?test',?title='Title',xlabel='x?axis',?ylabel='y?axis' ) plt.savefig(r'E:\Data_resourses\DataCharm?公眾號(hào)\Python\學(xué)術(shù)圖表繪制\ProPlot\abc_01.png',dpi=900)效果如下:
還可以對(duì)序號(hào)進(jìn)行樣式(abcstyle)、位置(abcloc)、大小(abcsize) 等的設(shè)置。其他詳細(xì)設(shè)置可以參考官網(wǎng)。
顏色條(Colorbars)和圖例(legends)
axis 顏色條和圖例
效果如下:
Figure 顏色條和圖例
效果如下:
時(shí)間刻度(Datetime ticks)
Datetime ticks
效果如下:
以上是我認(rèn)為ProPlot 比較優(yōu)秀的幾點(diǎn),當(dāng)然,大家也可以自行探索,發(fā)現(xiàn)自己喜歡的技巧。
ProPlot 實(shí)例演示
我們使用之前的推文數(shù)據(jù)進(jìn)行實(shí)例操作,詳細(xì)代碼如下:
#開(kāi)始繪圖 labels?=?['L1',?'L2',?'L3',?'L4',?'L5'] data_a?=?[20,?34,?30,?35,?27] data_b?=?[25,?32,?34,?20,?25] data_c?=?[12,?20,?24,?17,?16]x?=?np.arange(len(labels)) width?=?.25 fig,?axs?=?plot.subplots(ncols=2,?nrows=1,?sharey=1,?width=10,height=4) #for?mark,?data?in?zip() axs[0].plot(x,y1,?marker='s',c='k',lw=.5,label='D1',markersize=8) axs[0].plot(x,y2,?marker='s',c='k',ls='--',lw=.5,markersize=8,markerfacecolor='white',markeredgewidth=.4,label='D2') axs[0].plot(x,y3,marker='^',c='k',lw=.5,markersize=8,markerfacecolor='dimgray',markeredgecolor='dimgray',label='D3') axs[0].plot(x,y4,marker='^',c='k',lw=.5,markersize=8,label='D4')axs[1].bar(x-width/2,?data_a,width,label='category_A',color='#130074',ec='black',lw=.5) axs[1].bar(x+width/2,?data_b,?width,label='category_B',color='#CB181B',ec='black',lw=.5) axs[1].bar(x+width*3/2,?data_c,width,label='category_C',color='#008B45',ec='black',lw=.5)#先對(duì)整體進(jìn)行設(shè)置 axs.format(ylim=(0,40),xlabel='',?ylabel='Values',abc=True,?abcloc='ur',?abcstyle='(A)',abcsize=13,suptitle='ProPlot?Exercise' ) #再對(duì)每個(gè)子圖進(jìn)行設(shè)置 axs[0].format(ylim=(10,40),title='Multi-category?scatter?plot') axs[1].format(title='Multi-category?bar?plot',xticklabels=['L1',?'L2',?'L3',?'L4',?'L5'])plt.savefig(r'E:\Data_resourses\DataCharm?公眾號(hào)\Python\學(xué)術(shù)圖表繪制\ProPlot\test_01.png',dpi=900) plt.show()效果如下:
只是簡(jiǎn)單的繪制,其他的設(shè)置也需要熟悉繪圖函數(shù),這里就給大家做個(gè)簡(jiǎn)單的演示。
總結(jié)
本期推文我們介紹了matplotlib非常優(yōu)秀的科學(xué)圖表繪圖庫(kù)PrpPlot, 在一定程度上極大了縮減了定制化繪制時(shí)間,感興趣的同學(xué)可以持續(xù)關(guān)注這個(gè)庫(kù),當(dāng)然,還是最好在熟悉matplotlib基本繪圖函數(shù)及圖層屬性設(shè)置函數(shù)的基礎(chǔ)上啊。
各位伙伴們好,詹帥本帥搭建了一個(gè)個(gè)人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請(qǐng)移步小程序體驗(yàn)一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數(shù)據(jù)類(lèi)型的基本操作(長(zhǎng)文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長(zhǎng)文系列第②篇)
牛逼!Python函數(shù)和文件操作(長(zhǎng)文系列第③篇)
牛逼!Python錯(cuò)誤、異常和模塊(長(zhǎng)文系列第④篇)
總結(jié)
以上是生活随笔為你收集整理的还在对Matplotlib繁琐的图层设置感到烦恼!?快来看看这个Python绘图工具包吧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大厂疯传!Python+商业数据分析+数
- 下一篇: 简单实用,Python代码调试利器