【Python】在模仿中精进数据可视化09:近期基金涨幅排行可视化
本文完整代碼及數據已上傳至Github倉庫https://github.com/CNFeffery/FefferyViz
?1 簡介
最近幾個月一是工作繁忙,二是將業余的注意力多數放在Dash系列教程的撰寫上,因此費老師我已經很久很久很久沒有更新過「在模仿中精進數據可視化」系列文章了????,今天繼續第9期~
我們今天要繪制的數據可視化作品,靈感來源于DT財經某篇文章的一幅插圖,原圖如下:
圖1這幅圖其實可以說是柱狀蝴蝶圖的一種變種,用極坐標系代替平面坐標系,左上和右下彼此分離相對的半圓均以逆時針方向對數據排行進行帶色彩映射的可視化,非常的美觀,容易給人留下深刻的印象。
而今天的文章我們換個數據源,基于近3個月「股票型」以及「債券型」基金各自漲幅的前十名數據(數據來源東方財富網),來基于matplotlib使用同樣的方式進行表達。
2?復刻過程
2.1 拆解主要視覺元素
其實這幅作品繪制起來主要的難度在于極坐標系下很多matplotlib涉及到的API都比較冷門,如果是對matplotlib不太熟悉的朋友可能會感覺無從下手。
按照慣例,我們先來拆解一下這幅圖的主要構圖元素:
「分離的兩部分半圓區域」
這幅作品中的主體區域當數左上及右下區域對應的兩個半圓,它們之間是存在一定寬度的間隔,因此我們需要創建兩個極坐標系子圖,并調整位置,形成彼此相對的樣子,我們可以先使用plt.subplots()開辟畫布,再針對畫布對應Figure對象執行add_axes()方法調整位置,插入polar=True的極坐標子圖。
再配合set_xlim()、set_ylim(),以及極坐標系子圖專有的set_thetagrids()、set_rgrids和set_theta_offset()來完成限定圓形顯示的角度范圍、半徑范圍,自定義網格線以及修改旋轉角度等作用,這一步后形成圖2:
圖2「利用fill_between()來映射數據」
接下來我們就需要將數據映射到極坐標系中,可以選擇「柱狀圖」或「面積填充」的方式進行繪制,我這里為了操作自由度更高,選擇配合fill_between()來基于面積填充進行映射(調色盤方案基于palettable),因為是極坐標系,所以對應傳入的參數變成了角度范圍和半徑序列,配合一些額外線條和白色填充后,效果如下:
圖3「文字標注」
因為我們的基金數據中,基金的名稱普遍較長,且我還希望標注出每個扇形區域對應的漲幅數額,因此我使用環繞型的文字標注方式,基于matplotlib的text()方法,結合每個扇形區域的對應角度范圍,在循環過程中推導出標注文字的旋轉角度,這一步后得到的效果如下:
圖4這一步需要注意的是,matplotlib中text()在旋轉時,其針對水平和豎直方向對齊方式,在極坐標系中有些要注意的地方,我在上圖中設置了參數rotation_mode='anchor',它幫助我們「先旋轉文字,再對齊」,如果不加這個參數,會「先對齊再旋轉」,得到的效果會很混亂:
圖52.2 完成復刻
在上述拆解的基礎上,加上一些對細節的補充,便得到下面的作品:
圖6完整數據及代碼你可以在文章開頭的Github倉庫中對應找到。
以上就是本文的全部內容,歡迎在評論區與我進行交流討論~
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【Python】在模仿中精进数据可视化09:近期基金涨幅排行可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】贝叶斯机器学习:经典模型与代
- 下一篇: Win10如何屏蔽删除电脑右下角的广告