如何用Python繪製彩色表格

閱讀時間約 1 分鐘

首先這是我們的資料

raw-image

首先我們可以先最簡單的用plottable將圖表轉成圖檔

import pandas as pd

data = pd.read_csv("第14任總統副總統選舉鳥松區開票統計結果.csv")

import matplotlib

matplotlib.rc("font",family="Microsoft Yahei")

from matplotlib import pyplot as plt
from plottable import ColumnDefinition, Table

#設定圖表大小
plt.figure(figsize=(24,12))

#設定子圖位置
ax0 = plt.subplot2grid((1,1),(0,0))

#基礎圖表
tab = Table(data,ax=ax0)
raw-image

接著我們可以設定不同的屬性,客製化想輸出的表格

from matplotlib.colors import LinearSegmentedColormap
from plottable.cmap import normed_cmap
from plottable.plots import progress_donut
from plottable import cell

#設定熱力圖資訊
cmap_DPP = LinearSegmentedColormap.from_list(name="DPP",colors=["#99FF99", "#66FF66", "#00DD00", "#008800"], N=data["蔡英文、陳建仁"].max())
cmap_KMT = LinearSegmentedColormap.from_list(name="KMT",colors=["#CCDDFF", "#5599FF", "#0066FF", "#003C9D"], N=data["朱立倫、王如玄"].max())
cmap_PFP = LinearSegmentedColormap.from_list(name="PFP",colors=["#FFDDAA", "#FFBB66", "#FFAA33", "#FF8800"], N=data["宋楚瑜、徐欣瑩"].max())

#設定圖表大小
plt.figure(figsize=(18,24))
#設定子圖位置
ax0 = plt.subplot2grid((1,1),(0,0))

#基本屬性設定
tab = Table(data, #資料源
ax=ax0, #坐標軸對象
columns = ["村里別","投票所別","朱立倫、王如玄","蔡英文、陳建仁","宋楚瑜、徐欣瑩","有效票數","無效票數","投票數","選舉人數","投票率"], #選擇欄位(默認為使用所有columns)
footer_divider = True, #表格最下方是否顯示分隔線
row_dividers = True, #是否顯示各row分隔線
even_row_color="lightgray", #偶數欄顏色
odd_row_color="white", #奇數欄顏色
textprops = {"ha":"center","color":"k"}, #針對所有文字做屬性調整
column_border_kw={"linewidth": 1, "linestyle": "-","color":"gray"}, #針對設定的border的線作屬性調整
column_definitions = [
ColumnDefinition(name="index",textprops={"ha":"left","color":"gray"},border="right"), #針對各別欄位做調整
ColumnDefinition(name="朱立倫、王如玄",group="參選人",formatter=lambda x:str(x)+"票",border="left",cmap=cmap_KMT), #設定欄位名稱群組、文字格式、邊界、熱力圖
ColumnDefinition(name="蔡英文、陳建仁",group="參選人",formatter=lambda x:str(x)+"票",cmap=cmap_DPP),
ColumnDefinition(name="宋楚瑜、徐欣瑩",group="參選人",formatter=lambda x:str(x)+"票",border="right",cmap=cmap_PFP),
ColumnDefinition(name="選舉人數",border="left"),
ColumnDefinition(name="投票率",textprops={"ha":"center"},plot_fn=progress_donut,plot_kw={"is_pct":False,"formatter":"{:.0%}","radius":0.475,"color":"palevioletred"},border="left") #甜甜圈圖
]+
[
ColumnDefinition(name= i ,textprops={"ha":"center"},group="票數狀況")
for i in ["有效票數","無效票數","投票數"]
]
)

#設定欄位值得顏色
tab.columns["選舉人數"].set_fontcolor("palevioletred")

#設定當選舉人數<1000該行標紅
for i in data["選舉人數"].index:
if data["選舉人數"][i]<1000:
tab.rows[i].set_color("plum")

#儲存圖表為圖檔
plt.savefig("圖表.png")
raw-image



4會員
37內容數
我是果農,這裡有我的人資職涯經驗分享,與我菜鳥般的Python資料分析筆記,還有一些讀書心得,希望對大家有幫助。
留言0
查看全部
發表第一個留言支持創作者!
果農的沙龍 的其他內容
你可能也想看
Google News 追蹤
Thumbnail
本專欄將提供給您最新的市場資訊、產業研究、交易心法、精選公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本專欄將提供給您最新的市場資訊、產業研究、交易心法、精選公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。