(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

費弗裡發表於2023-02-02

本文示例程式碼已上傳至我的Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes

1 簡介

  大家好我是費老師,matplotlib作為資料視覺化的強力工具,可以幫助我們自由創作各式各樣的資料視覺化作品,其中matplotlib.pyplot.table模組就專門用於繪製表格,但是由於引數複雜,且預設樣式單一簡陋,想基於它繪製出美觀的表格需要花費不少功夫。

  而我最近發現的一個基於matplotlib的第三方庫plottable,用它來生成資料表格圖既簡單又美觀,今天的文章中費老師我就來帶大家學習它的常用方法?~

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

2 基於plottable繪製漂亮的表格

  使用pip install plottable完成安裝後,我們先從一個簡單的例子瞭解其基礎的使用方式:

2.1 從簡單例子出發

  plottable的基礎使用很簡單,在已有資料框的基礎上,直接呼叫plottable中的Table模組即可:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

  渲染出的表格圖如下:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

2.2 plottable的常用方法

  瞭解到plottable的基礎用法後,接下來我們來學習如何新增一些常用引數來對錶格進行美化:

2.2.1 控制表格奇數偶數行底色

  透過在Table()中設定引數odd_row_coloreven_row_color,我們可以傳入matplotlib中合法的色彩值進行表格奇數偶數行底色的設定:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

2.2.2 控制表頭單元格與資料單元格樣式

  透過Table()中的引數col_label_cell_kwcell_kw,我們可以分別對錶頭區域單元格、資料區域單元格進行樣式設定,接受matplotlib.patches.Rectangle全部可用引數,例如:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

2.2.3 調節單元格文字樣式

  透過引數textprops我們可以對全部單元格的文字樣式進行控制:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

2.2.4 配置行分割線

  透過bool型引數col_label_dividerfooter_dividerrow_dividers可以分別設定是否為表頭、表格尾部、資料行繪製分割線:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

  而透過引數col_label_divider_kwfooter_divider_kwrow_divider_kw則可以分別控制各個部分分割線的樣式,支援plt.plot中全部引數:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

2.2.5 基於ColDef的列樣式細粒度設定

  plottable中最強大的地方在於,其透過配置由plottable.ColDef物件列表構成的column_definitions引數,可細粒度地對每一列進行自由的樣式定義,其中每個ColDef()物件透過引數name與列名進行對應,常見的用法有:

  • 分別設定不同欄位的寬度比例係數

  以每列的預設寬度為1,可以分別為不同列調整寬度:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格
  • 分別設定不同欄位的文字對齊方式

  每個ColDef物件都可設定textprops引數,基於此可以實現為不同欄位定義水平對齊方式:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格
  • 分別為不同欄位設定數值色彩對映

  透過為ColDef設定引數cmaptext_cmap,我們可以分別基於對應列的數值,對其單元格底色或字型顏色進行值對映:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格
  • 為欄位建立分組展示

  透過為若干個ColDef設定相同的group引數,我們可以為具有相同group引數的欄位新增分組標識:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格
  • 為指定欄位繪製列邊框

  透過為ColDef設定引數border,我們可以決定如何繪製不同欄位的列邊框:

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

  除了本文所述的部分功能外,plottable還有很多高階進階的使用方法,譬如單元格圖片渲染、自定義單元格繪製內容等,下面的幾個例子就是基於plottable創作的:

https://plottable.readthedocs.io/en/latest/example_notebooks/wwc_example.html

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

https://plottable.readthedocs.io/en/latest/example_notebooks/bohndesliga_table.html

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

https://plottable.readthedocs.io/en/latest/example_notebooks/plot_example.html

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

https://plottable.readthedocs.io/en/latest/example_notebooks/heatmap.html

(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格

  更多用法請移步官網https://plottable.readthedocs.io/


  以上就是本文的全部內容,歡迎在評論區與我進行討論~

相關文章