iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
Python

眾裏尋它:Python表格利器Great Tables系列 第 8

[Day08] - 調整表格顏色、字型及線條

  • 分享至 

  • xImage
  •  

今天我們來介紹如何使用GT.tab_style()來調表格中的各種樣式,包括顏色、字型、線條等。

以下將繼續使用df_demo為範例說明:
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參數接受gtloc 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()
    )
)

style.fill all columns

又或者透過loc.body()columns參數選取想作用的欄。例如:

(
    GT(df_demo).tab_style(
        style=style.fill(color="lightgray"), locations=loc.body(columns="str")
    )
)

style.fill str columns

此時,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 polars selector

此時,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 rows

此時,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.text

再來我們試著調整表格中線條的設定。使用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")),
    )
)

style.borders

最後,我們再看一個比較複雜的例子。tab_style()stylelocations可以同時進行多種調整,所以我們可以將想調整的各種風格與想作用的範圍,集合在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 complex

這裡我們同時使用了三種不同的style class來調整表格風格。此外,在選取欄時混合使用了各式的選取方法;而在選取行時,使用了一個較長的Polars expression。

希望您現在跟我一樣,感受到使用Polars expression或是selector來選取表格的欄或行是多麼地輕鬆方便。

Code

本日程式碼傳送門


上一篇
[Day07] - 添加表格階層、分類及分類標題
下一篇
[Day09] - 客製化表格樣式
系列文
眾裏尋它:Python表格利器Great Tables30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言