Python应用实战-Python爬取4000+股票数据,并用plotly绘制了树状热力图(treemap)
?
目錄:
-
1. 準備工作
-
2. 開始繪圖
-
2.1. 簡單的例子
-
2.2. px.treemap常用參數介紹
-
2.3. color_continuous_scale參數介紹
-
2.4. 大A股市樹狀熱力圖來了
-
2.5. plotly圖片存本地
-
1. 準備工作
我這邊是在jupyterlab中演示的plotly圖表,如果只安裝plotly是無法正常顯示圖表的(會顯示為空白),我們需要進行以下準備(以下命令均在cmd下操作即可):
#?安裝plotly庫及plotly-orca庫 pip?install?plotly pip?install?plotly?plotly-orca#?Basic?JupyterLab?renderer?support jupyter?labextension?install?jupyterlab-plotly#?OPTIONAL:?Jupyter?widgets?extension?for?FigureWidget?support jupyter?labextension?install?@jupyter-widgets/jupyterlab-manager?plotlywidget參考:https://github.com/plotly/plotly.py
關于本文用到的數據呢,大家可以參考《python爬取股票最新數據并用excel繪制樹狀圖》的爬蟲代碼自行爬取,或者公眾號回復0302獲取哈!
2. 開始繪圖
Treemap繪制方式有兩種,一種是在plotly.express下,一種是在go.Treemap下,我們這里用到的是前者。至于其中的區別,大概就是前者是高級版本,封裝了很多后者的復雜操作,可以直接用pandas.Dataframe類型,是現在主推的。更多差異大家可自行在實踐過程中感悟,畢竟才哥也說不太明白!
2.1. 簡單的例子
plotly自帶很多測試數據,我們用其中一個才試試簡單的。
import?plotly.express?as?pxdf?=?px.data.tips() df.head()px.data.tips()
以上數據大致就是星期幾什么餐不同性別的人支付的金額和小費數等,我們用1行代碼繪制簡單的treemap如下:
fig?=?px.treemap(df,?path=['day',?'time',?'sex'],?values='total_bill') fig.show()簡單的圖
可以看到在該樹狀圖中,層級依次是在path中順序的day、time和sex,而每個色塊面積大小就是values給定的total_bill。鼠標懸停的時候,會出現更詳細的信息,畢竟plotly是可交互式的,這里不展開哈。
那么,px.treemap究竟還可以做什么呢?我們繼續往下看。
2.2. px.treemap常用參數介紹
讓我們直接在jupyterlab用?來獲取函數參數吧!
#?px.treemap?#?Signature: px.treemap(data_frame=None,?#?就是你要用到的數據,names=None,?#?暫時不用values=None,?#?就是你色塊大小parents=None,?#?暫時也不用,和names組合出現吧ids=None,?#?暫時不用,后續暫時不用的字段我就不寫啦path=None,?#?層級,依次排開color=None,?#?顏色,比如根據?漲跌幅字段來設置顏色color_continuous_scale=None,?#?自帶的顏色尺卡,后面會介紹range_color=None,?#?顏色范圍區間,超過就是兩端值color_continuous_midpoint=None,?#?顏色尺卡最中間?的值,比如漲跌幅中間設置為?0?最合適color_discrete_sequence=None,?color_discrete_map=None,hover_name=None,hover_data=None,?#?就是懸停時?顯示字段及其格式custom_data=None,?#?額外的想顯示的數據labels=None,title=None,?#?標題咯template=None,width=None,?#?圖高height=None,?#?圖長branchvalues=None,maxdepth=None,? )對于更多參數的了解,大家可以自己???后看哈,蠻詳細的,就是純英文的我自己看著要結合翻譯軟件也蠻累。
2.3. color_continuous_scale參數介紹
上面我們提到過該參數為 我們 treemap圖色塊顏色使用的色卡,具體有哪些可選以及這些可選項都是啥樣呢?
我們在?里找到了方向:
color_continuous_scale:?list?of?strStrings?should?define?valid?CSS-colors?This?list?is?used?to?build?acontinuous?color?scale?when?the?column?denoted?by?`color`?containsnumeric?data.?Various?useful?color?scales?are?available?in?the`plotly.express.colors`?submodules,?specifically`plotly.express.colors.sequential`,?`plotly.express.colors.diverging`and?`plotly.express.colors.cyclical`.我們在jupyterlab里調用里面提到的方法,很開心的發現了它們:
import?plotly #?大家不要急,一個個來,我這里預覽只截取了diverging的部分 plotly.express.colors.cyclical.swatches() plotly.express.colors.sequential.swatches() plotly.express.colors.diverging.swatches()diverging
由于在我們國家,綠色代表跌,紅色代表漲,尋覓了半天我選取了Geyser,當然大家亦可自行選擇。
推薦選項
2.4. 大A股市樹狀熱力圖來了
基于以上的了解,發現差不多可以繪制圖了,那么來吧!
import?plotly.express?as?pxfig?=?px.treemap(df,?path=['板塊',?'企業名稱',],??#?指定層次結構,每一個層次都應該是category型的變量values='市值(億)',?#?需要聚合的列名color='漲幅',?range_color?=?[-0.05,?0.05],?#?色彩范圍最大最小值hover_data=?{'漲幅':':.2%','市值(億)':':.2f'},?#?鼠標懸浮顯示數據的格式height?=?1080,width?=?1920,color_continuous_scale='Geyser',color_continuous_midpoint=0?,?#?顏色變化中間值設置為增長率=0) fig.update_traces(textinfo='label+value',textfont?=?dict(size?=?24))?#?顯示企業名稱和市值,字體24 fig.show()效果演示
2.5. plotly圖片存本地
這里是指圖片哦,不是html文件哈!
大家還記得我們在準備工作中 安裝orca?,沒事,不記得的話,重新裝一下就行了。
pip?install?plotly?plotly-orca對于我們繪制好的plotly圖表對象,以下方式可以進行本地保存。
import?plotly.io?as?piopio.write_image(fig,?'樹狀云圖png')當然,要是覺得麻煩,其實你還可以直接點擊圖表最右上角的攝像頭進行下載哈!
總結
以上是生活随笔為你收集整理的Python应用实战-Python爬取4000+股票数据,并用plotly绘制了树状热力图(treemap)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python应用实战-用Highchar
- 下一篇: Panda处理文本和时序数据?首选向量化