日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python-Matplotlib动态曲线图(linechart)绘制

發布時間:2024/9/15 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-Matplotlib动态曲线图(linechart)绘制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

效果預覽

配上動感的音樂感覺就是不一樣啊,要達到上述效果除了核心的Matplotlib繪圖外,其他工具和上篇推文?Hans Rosling Charts Matplotlib 繪制所使用的工具一樣啊。下面將分以下幾個部分對制作過程進行介紹。

01. 引言

動態曲線圖不同于動態氣泡圖,它可以查看部分指標在一段時間內的變化趨勢,本期推文將推出動態曲線圖的?Matplotlib?繪制過程,核心過程為?折線圖?和 散點圖 的繪制,詳細過程如下:

02. 數據處理

由于需要查某些指標隨時間的變化趨勢,可將數據處理成如下形式(部分):

圖表中的?china、usa、japan?等變量可以結合自己的實際需求進行更改,而?time?列則是時間變化。上述數據為本次繪制動態曲線圖所需數據,即從?gapminder?網站下載的平均個人收入(Income per person)數據整理而成,處理代碼主要如下:

這里?eq(nation)?操作為提取自己所需數據,最后通過?pandas?的?concat()?操縱進行提取數據合并即可。

03. 數據可視化

動態圖表的繪制主要在于折線圖和散點圖的繪制,我們采用的依舊還是面向對象式繪圖方式,這里建議繪制較為復雜的圖表時多采用此方法進行繪制。完整繪圖過程如下:

繪圖的核心代碼(以china為例)主要在第16-24行,詳細解釋如下:

idx = data_test.time

折線圖:

ax.plot( idx, data_test['china'],color = '#FF5872',lw = 4)#折線圖

其中,x?和?y?參數分別設置為數據的?time?列和?china?列,color?和線寬?lw?屬性則是為了美化折線圖。

散點圖:

ax.scatter(idx.tolist()[-1],data_test['china'].tolist()[-1],color='#FF5872',edgecolor ='black',s = 280,lw = 2.5,zorder =4)#散點圖

散點圖的繪制則需知道我們只需要繪制最后一個散點,即獲取最后一個數據,因此scatter的x,y均有[-1]的索引,當然,我們需在之前使用tolist()方法轉變成數據列表形式,填充顏色?color、散點邊框顏色?edgecolor、散點大小?s、和線寬?lw?均可根據自己需要進行定制化設置。這里需要注意的是zorder屬性的設置,這里設置zorder=4,表示散點圖繪制在折線圖之后,即散點圖壓在折線圖之上,使繪圖更加美觀。

文本(國家名):

ax.text(idx.tolist()[-1]+5,data_test['china'].tolist()[-1]-250,'china',size=15,c= '#FF5872',va='top',ha='left',fontweight = 'bold')#國家名

這里的?x?和?y?屬性則是根據實際情況進行慢慢調試 ,其他的屬性則是美化圖表使用。

文本(數值):

ax.text(idx.tolist()[-1]+5,data_test['china'].tolist()[-1]-250,'china',size=15,c= '#FF5872',va='top',ha='left',fontweight = 'bold')#國家名

由于數據較大,這里

':{:,.0f}'.format(data_test['china'].tolist()[-1])對文本進行格式化操作,其他屬性則根據自己需求進行設置即可。

部分詳細解釋如下:

  • ?77-84?行則是添加位置固定的文本內容,設置?transform = ax.transAxes?則使文本位置不隨數據變化而變動。這里需要指出的是,一般的繪圖過程,固定文本一般都是在圖表的刻度、軸等屬性設置結束后再進行添加,這點則需要注意,好的繪圖習慣可以大大減少繪圖時間哦

  • 第?66-71?行則是自定義 y 軸的刻度比例范圍,由于,較早年份的數據較為集中,使圖表繪制集中在一塊,影響美觀,特經此過程進行設置,而這也是?matplotlib 3.1?版本新添加的內容。

  • 第?53?行使用?ax.axvline()?為動態圖表添加一條推進線。

  • 第?54-64?行則是對圖表刻度、軸脊等 屬性進設置。

  • 第?75?行采用ax.yaxis.set_major_formatter(ticker.StrMethodFormatter('{x:,.0f}'))定制化刻度標簽形式,此方法對繪制定制化的刻度標簽非常有用,希望感興趣的同學們可以多看看官網的教程。

  • 第?86?行?ax.set_axisbelow(True)?設置網格線等屬性位于圖表圖層之下。

下面給出一年份數據繪制的曲線圖結果:

備注:要想生成這種暗黑背景風格的圖表,則可通過以下設置完成:

#設置畫布figure顏色 plt.figure(facecolor='#1D1E23',edgecolor='#1D1E23') #對Axis進行背景顏色設置 ax.set_facecolor('#373E4B')

04. 總結

Matplotlib繪制動態曲線圖較動態氣泡圖而言,繪制過程較為簡單,主要就是折線圖和散點圖的配合使用,其他的就是圖表屬性的定制化設置了,個人能力有限,發現錯誤的同學可以留言告知啊,下期我們將繼續推出Matplotlib動態圖系列的第三篇--動態條形圖 繪制方法。

E?N?D

各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)

推薦閱讀

牛逼!Python常用數據類型的基本操作(長文系列第①篇)

牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)

牛逼!Python函數和文件操作(長文系列第③篇)

牛逼!Python錯誤、異常和模塊(長文系列第④篇)

總結

以上是生活随笔為你收集整理的Python-Matplotlib动态曲线图(linechart)绘制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。