[心得] 將多個 boxplot 畫在同一張

作者: mikemike1021 (mike)   2022-09-09 05:46:50
論壇無廣告完整版: https://forum.community.tw/t/topic/323
差在含有程式碼及 latex 的部分,整個貼過來不好閱讀
之前有在板上介紹: https://www.ptt.cc/bbs/Python/M.1659038907.A.9C2.html
論壇可以方便大家分享有關電腦或程式相關的事情。
使用 markdown、程式碼自動上色、支援 latex 還有標籤。
可以直接將程式碼貼上,問問題或者解答時就不需要再利用額外網站,達到方便閱讀
的效果,另外更將問題跟程式碼擺在一塊,讓別人更好搜尋。
問答也可以使用類似於 stackoverflow 的形式。
正文開始
使用 matplotlib 的 boxplot ,將不同種但有相同分析指標的畫在一起,方便對比同一
指標下不同種的差別。直接使用 boxplot 是沒辦法將不同資料組合在一起,但可以藉由
指定位置跟寬度,來達成所需,最後可以畫出類似於下圖或封面圖的效果。除此之外,也
會順帶介紹一些 boxplot 相關參數。
https://imgur.com/8lTHLkT.png
boxplot 參數介紹
https://imgur.com/JXDIguf.png
上圖是將我們後面用到的相關參數表現出來:
- 左側是調整 boxplot 的各個部分 (flier, cap, whisker, box, media) 的影響範圍,
並由 *props 所設置(如 flierprops, capprops 等)
- 下方 xtick 預設會是從 1 至 num of cols,每一個 column 產生一個 box
- width 預設是 0.5 且是整個 box 的寬度
- position 是中心點且預設為 xtick 上
將多個 boxplot 畫在一起
雖然 matplotlib 並不直接讓我們能夠結合多個 boxplot,但藉由設定 width,
position 可以將各個 box 排好,再藉由顏色來區分。
https://imgur.com/5VwT9b0.png
空間計算詳見論壇版,簡而言之,分配給每一組有 total width / n 的空間,但只畫
total width / (n+1) 來區隔各組。
當然這裡可以依據自己所需來改變。
實作的程式碼就請見論壇
展示
這裡偷懶,直接把顏色當圖例的名字使用
- 三個指標(num_label)、四種類別(num_kind)
https://imgur.com/6Q8ztaE.png
- 四種指標、七種類別
https://imgur.com/8lTHLkT.png
參考資料:matplotlib boxplot 跟幾篇 stackoverflow (網址請見論壇)
最後再次邀請大家來論壇 https://forum.community.tw 試試,希望能夠更方便大家討論
作者: wisad   2022-09-15 08:28:00

Links booklink

Contact Us: admin [ a t ] ucptt.com