今天我們來介紹如何使用GT.tab_style()
來調表格中的各種樣式,包括顏色、字型、線條等。
以下將繼續使用df_demo
為範例說明:
GT.tab_style()
GT.tab_style(self, style, locations)
GT.tab_style()使用style
參數來指定所需調整的類別,locations
參數來指定所需改變的位置。
style
參數接受gt
的三種style
class,分別是:
style.fill(color)
style.text(color=None, font=None, size=None, align=None, v_align=None, style=None, weight=None, stretch=None, decorate=None, transform=None, whitespace=None)
style.borders(sides='all', color='#000000', style='solid', weight='1px')
locations
參數接受gt
的loc
class,目前僅提供loc.body()一種。
loc.body(columns=None, rows=None)
下面我們直接透過幾個例子來說明。
使用style.fill()
將表格背景調整為「"lightgray"」,並作用在loc.body()
(預設為全部欄位):
(
GT(df_demo).tab_style(
style=style.fill(color="lightgray"), locations=loc.body()
)
)
又或者透過loc.body()
的columns
參數選取想作用的欄。例如:
(
GT(df_demo).tab_style(
style=style.fill(color="lightgray"), locations=loc.body(columns="str")
)
)
此時,style.fill()
的作用範圍將僅限於「"str"」欄。
當然,我們可以使用Polars selector來選取欄位。例如:
(
GT(df_demo).tab_style(
style=style.fill(color="lightgray"),
locations=loc.body(
columns=cs.starts_with("date") | cs.starts_with("int")
),
)
)
此時,style.fill()
的作用範圍將僅限於欄位名稱開頭為「"date"」或「"int"」的欄位。
如果您只想調整欄位中某幾行的風格,可以運用loc.body()
的rows
參數。例如:
(
GT(df_demo).tab_style(
style=style.fill(color="lightgray"),
locations=loc.body(columns="str", rows=pl.col("group").eq("B")),
)
)
此時,style.fill()
將作用在「"str"」欄位,且只作用在「"group"」欄位值等於「"B"」的行上。
接著我們試著調整表格中字體的設定。使用style.text()
將表格中字的顏色指定為「"green"」、字型指定為「"Georgia"」及將字體粗細指定為「"bold"」:
(
GT(df_demo).tab_style(
style.text(color="green", font="Georgia", weight="bold"),
locations=loc.body(columns="str", rows=pl.col("group").eq("B")),
)
)
再來我們試著調整表格中線條的設定。使用style.borders()
將表格中線條的顏色指定為「"green"」、線條型態指定為「"dashed"」及將線條粗細指定則為「"3px"」:
(
GT(df_demo).tab_style(
style.borders(color="red", style="dashed", weight="3px"),
locations=loc.body(columns="str", rows=pl.col("group").eq("B")),
)
)
最後,我們再看一個比較複雜的例子。tab_style()
的style
及locations
可以同時進行多種調整,所以我們可以將想調整的各種風格與想作用的範圍,集合在list
中。例如:
(
GT(df_demo).tab_style(
style=[
style.fill(color="lightgray"),
style.text(color="green", font="Georgia", weight="bold"),
style.borders(color="red", style="dashed", weight="3px"),
],
locations=loc.body(
columns=[cs.numeric() - cs.integer(), pl.col("group"), "str", -1],
rows=pl.col("group").eq("A").or_(pl.col("float2").gt(9)),
),
)
)
這裡我們同時使用了三種不同的style
class來調整表格風格。此外,在選取欄時混合使用了各式的選取方法;而在選取行時,使用了一個較長的Polars expression。
希望您現在跟我一樣,感受到使用Polars expression或是selector來選取表格的欄或行是多麼地輕鬆方便。