如何用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會員
60內容數
我是果農,這裡有我的人資職涯經驗分享,與我菜鳥般的Python資料分析筆記,還有一些讀書心得,希望對大家有幫助。
留言0
查看全部
發表第一個留言支持創作者!
果農的沙龍 的其他內容
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。