如何用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



avatar-img
4會員
60內容數
我是果農,這裡有我的人資職涯經驗分享,與我菜鳥般的Python資料分析筆記,還有一些讀書心得,希望對大家有幫助。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
果農的沙龍 的其他內容
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。