本文示例程式碼已上傳至我的
Github
倉庫https://github.com/CNFeffery/DataScienceStudyNotes
1 簡介
大家好我是費老師,matplotlib
作為資料視覺化的強力工具,可以幫助我們自由創作各式各樣的資料視覺化作品,其中matplotlib.pyplot.table
模組就專門用於繪製表格,但是由於引數複雜,且預設樣式單一簡陋,想基於它繪製出美觀的表格需要花費不少功夫。
而我最近發現的一個基於matplotlib
的第三方庫plottable
,用它來生成資料表格圖既簡單又美觀,今天的文章中費老師我就來帶大家學習它的常用方法?~
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/ae9ae70b7fe100526b554df3ec83f415fc19fba4a0fd4dac893c421fa864f1c0.jpg)
2 基於plottable繪製漂亮的表格
使用pip install plottable
完成安裝後,我們先從一個簡單的例子瞭解其基礎的使用方式:
2.1 從簡單例子出發
plottable
的基礎使用很簡單,在已有資料框的基礎上,直接呼叫plottable
中的Table
模組即可:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/4bc451a16bccb95dd1a8a971206160a358764008adbf340c3ea1fc6677bde7f9.png)
渲染出的表格圖如下:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/c7f25a06b27bb1018dc0a05b856a392a6ff6ac7a8d017825a5c3c72cc2b5ff8c.png)
2.2 plottable的常用方法
瞭解到plottable
的基礎用法後,接下來我們來學習如何新增一些常用引數來對錶格進行美化:
2.2.1 控制表格奇數偶數行底色
透過在Table()
中設定引數odd_row_color
和even_row_color
,我們可以傳入matplotlib
中合法的色彩值進行表格奇數偶數行底色的設定:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/531da35fb9b699a4c0e285dbfe11d42f3913a00f7e684b9a8b9efb17791e7118.png)
2.2.2 控制表頭單元格與資料單元格樣式
透過Table()
中的引數col_label_cell_kw
、cell_kw
,我們可以分別對錶頭區域單元格、資料區域單元格進行樣式設定,接受matplotlib.patches.Rectangle
全部可用引數,例如:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/d6a30f9d068362933fa29c83910665d62e893c9eced56a93e4d6aaf0b9d1fdec.png)
2.2.3 調節單元格文字樣式
透過引數textprops
我們可以對全部單元格的文字樣式進行控制:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/afb455314412cf22999e8c59eceb78e21f787bbcf46c6ce1a43e9de640d994c4.png)
2.2.4 配置行分割線
透過bool型引數col_label_divider
、footer_divider
、row_dividers
可以分別設定是否為表頭、表格尾部、資料行繪製分割線:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/aba5c391b0bd3bb08ab5eb6141e05aaeb45a4e110ebb805729905c62f975a7b5.png)
而透過引數col_label_divider_kw
、footer_divider_kw
、row_divider_kw
則可以分別控制各個部分分割線的樣式,支援plt.plot
中全部引數:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/a0bdd9938b50f9bb879abdf1cd7dc33a5b65064a2b5f00e06e90747c0cfcd15c.png)
2.2.5 基於ColDef的列樣式細粒度設定
plottable
中最強大的地方在於,其透過配置由plottable.ColDef
物件列表構成的column_definitions
引數,可細粒度地對每一列進行自由的樣式定義,其中每個ColDef()
物件透過引數name
與列名進行對應,常見的用法有:
- 分別設定不同欄位的寬度比例係數
以每列的預設寬度為1,可以分別為不同列調整寬度:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/e066ff4578fc50bec9c286626305dadd250c9a364a8479545102441839c09a84.png)
- 分別設定不同欄位的文字對齊方式
每個ColDef
物件都可設定textprops
引數,基於此可以實現為不同欄位定義水平對齊方式:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/ec2efe69f431bb434ca2b6dba27b90c3967d47eb2a7f41fd9c1e422c0a4c9c9c.png)
- 分別為不同欄位設定數值色彩對映
透過為ColDef
設定引數cmap
、text_cmap
,我們可以分別基於對應列的數值,對其單元格底色或字型顏色進行值對映:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/136ed1ea306308856392e9ff964daef82570b630111d1bdebe511f6f40dc99b6.png)
- 為欄位建立分組展示
透過為若干個ColDef
設定相同的group
引數,我們可以為具有相同group
引數的欄位新增分組標識:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/c77122e5d0244a1a43a5b3058911109f93e854a51ebec59471ec6eaaf430a88d.png)
- 為指定欄位繪製列邊框
透過為ColDef
設定引數border
,我們可以決定如何繪製不同欄位的列邊框:
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/7ad1155be74354a50f988c67a03f05a3c61b8cb8a305e3415965ef45f02600d1.png)
除了本文所述的部分功能外,plottable
還有很多高階進階的使用方法,譬如單元格圖片渲染、自定義單元格繪製內容等,下面的幾個例子就是基於plottable
創作的:
https://plottable.readthedocs.io/en/latest/example_notebooks/wwc_example.html
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/ad80ad6fbaa08abf7ab43641b84510e78b33bb32361b3e5bc0d7494ca29c23d0.png)
https://plottable.readthedocs.io/en/latest/example_notebooks/bohndesliga_table.html
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/c8ce9074dba9aadbcf2316e2081c663f673d2fa1ed4d35a1dff8a8d03bae528c.png)
https://plottable.readthedocs.io/en/latest/example_notebooks/plot_example.html
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/fc97737c770dcc44bf2f7679fd19e8cfa6b5d8a3b7a8834698d12506cc2c176e.png)
https://plottable.readthedocs.io/en/latest/example_notebooks/heatmap.html
![(資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格](https://i.iter01.com/images/1c3ce080a805d33657ae3bfc651c019402e069c921f557f1dfc884f156166ba1.png)
更多用法請移步官網https://plottable.readthedocs.io/
。
以上就是本文的全部內容,歡迎在評論區與我進行討論~