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

看板Python作者 (mike)時間1年前 (2022/09/09 05:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
論壇無廣告完整版: 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 試試,希望能夠更方便大家討論 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 46.223.163.124 (德國) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1662673612.A.982.html
文章代碼(AID): #1Z6cBCc2 (Python)