HOWTO · Seaborn
如何變更 Seaborn 圖表大小
本教學示範如何在 Python 中變更 Seaborn 圖表的大小。
本頁內容
在資料科學與視覺化中,建立資訊豐富且視覺上吸引人的圖表至關重要。建立美觀圖表的一個強大工具是 Seaborn,它是建立在 Matplotlib 之上的 Python 資料視覺化函式庫。
在本文中,我們將探討在 Python 中設定 Seaborn 圖表圖形大小的各種方法,從使用 height 和 aspect 等內建參數,到使用 Matplotlib 的 figure()、gcf() 和 subplots() 等函式。
在 Python 中使用 seaborn.set() 函式設定 Seaborn 圖表圖形大小
我們要使用的第一種方法是 seaborn.set() 函式,它讓使用者可以自訂函式庫外觀的各個方面,包括主題和設定。針對我們的目的,我們將著重於用它來控制 Seaborn 圖表的大小。
語法:
import seaborn as sns
sns.set(rc={"figure.figsize": (width, height)})
rc 參數接受一個字典,我們在其中指定關鍵字引數 'figure.figsize',並將對應值設為包含圖形所需寬度和高度的元組。請將 width 和 height 替換為圖形的具體大小。
使用 seaborn.set() 設定 Seaborn 圖形大小的範例
預設圖形大小:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Sample data
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df)
plt.title("Default Figure Size")
plt.show()
在最初的程式碼區塊中,我們匯入所需的函式庫、建立範例資料,並在未明確設定圖形大小的情況下產生圖表。這代表預設行為。
程式碼輸出:
設定 Seaborn 圖形大小之後:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.set(rc={"figure.figsize": (15, 8)})
p = sns.lineplot(data=df)
plt.show()
在這個修改過的程式碼區塊中,我們引入了 sns.set(rc={"figure.figsize": (15, 8)}),呼叫 seaborn.set() 函式來指定 Seaborn 圖形大小。rc 參數接受一個字典,在這個例子中,我們將關鍵字引數 "figure.figsize" 設定為所需的尺寸:寬 15 英寸、高 8 英寸。
程式碼輸出:
輸出顯示了一個具有指定圖形大小(寬 15 英寸、高 8 英寸)的折線圖,確保視覺呈現符合所需的大小。
在 Python 中使用 rcParams 函式設定 Seaborn 圖表圖形大小
除了 seaborn.set() 函式之外,設定 Seaborn 圖形大小的另一種方法是使用 matplotlib.pyplot 模組 中的 rcParams 函式。這第二種方法同樣提供了自訂圖表樣式的靈活性。
rcParams 函式用於設定 Matplotlib 行為的各個方面,包括圖形大小。若要變更圖形大小,我們特別針對 rcParams 中的 "figure.figsize" 參數,將所需尺寸以元組形式指派給它。
語法:
from matplotlib import rcParams
rcParams["figure.figsize"] = (width, height)
請將 width 和 height 替換為您想要的圖形具體尺寸。
使用 rcParams 設定 Seaborn 圖形大小的範例
from matplotlib import rcParams
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
rcParams["figure.figsize"] = 15, 8
p = sns.lineplot(data=df)
plt.show()
若要設定圖形大小,我們使用 rcParams["figure.figsize"] = 15, 8。這行程式碼直接修改 Matplotlib 的執行階段設定參數,以指定所需的尺寸:寬 15 英寸、高 8 英寸。
程式碼輸出:
在 Python 中使用 matplotlib.pyplot.figure() 函式設定 Seaborn 圖表圖形大小
我們可以使用的另一種簡單方法是 matplotlib.pyplot.figure() 函式,它用於建立一個新的圖形實例。透過利用這個函式中的 figsize 參數,我們可以以英寸為單位指定圖形物件的寬度和高度。
語法:
import matplotlib.pyplot as plt
plt.figure(figsize=(width, height))
請將 width 和 height 替換為您想要的圖形具體尺寸。必須在建立圖表之前呼叫這個函式,以確保圖形大小得到適當設定。
使用 matplotlib.pyplot.figure() 設定 Seaborn 圖形大小的範例
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
# Set the size of the figure using matplotlib.pyplot.figure()
plt.figure(figsize=(15, 8))
# Create plot
p = sns.lineplot(data=df)
plt.show()
在這個範例中,我們使用 plt.figure(figsize=(15, 8)),其中 figsize 以表示圖形寬度和高度的元組形式指定。這個方法確保後續的圖表遵循指定的尺寸。
程式碼輸出:
我們已成功建立了一個具有指定 Seaborn 圖形大小(寬 15 英寸、高 8 英寸)的折線圖。
在 Python 中使用 matplotlib.pyplot.gcf() 函式設定 Seaborn 圖表圖形大小
若要精細控制圖表的大小,matplotlib.pyplot.gcf() 函式結合 set_size_inches() 提供了一個多功能的解決方案。
matplotlib.pyplot.gcf() 函式是「取得目前圖形」(get current figure)的縮寫,它會擷取目前的圖形實例。與 set_size_inches() 搭配使用時,它可以讓您動態調整圖形大小。
語法:
import matplotlib.pyplot as plt
current_fig = plt.gcf()
current_fig.set_size_inches(width, height)
請將 width 和 height 替換為您所需的尺寸。當您已經建立了一個圖表並想修改其大小時,這個函式特別方便。
使用 matplotlib.pyplot.gcf() 設定 Seaborn 圖形大小的範例
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
p = sns.lineplot(data=df)
plt.gcf().set_size_inches(15, 8)
plt.show()
與先前的範例不同,我們在建立圖表之後使用 plt.gcf().set_size_inches(15, 8) 來設定圖形大小。plt.gcf() 會擷取目前的圖形實例,然後套用 set_size_inches(),將圖形動態調整為寬 15 英寸、高 8 英寸。
程式碼輸出:
可以看到,輸出顯示了一個具有指定圖形大小(寬 15 英寸、高 8 英寸)的折線圖。
在 Python 中使用 height 和 aspect 參數設定 Seaborn 圖表圖形大小
Seaborn 為 lmplot、catplot 和 jointplot 等特定圖表類型提供 height 和 aspect 等內建參數,從而簡化了調整圖形大小的過程。這些參數讓使用者無需額外的函式呼叫,即可直接控制所繪製圖形的大小。
Seaborn 中的 height 參數表示整個圖形的高度,而 aspect 參數控制圖表的長寬比。
使用 height 和 aspect 參數設定 Seaborn 圖形大小的範例
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
# create plot
p = sns.catplot(data=df, height=8, aspect=15 / 8, kind="bar")
plt.show()
在這個範例中,若要設定圖形大小,我們使用本質上支援 height 和 aspect 參數的 sns.catplot() 函式。在這個例子中,height=8 將圖形高度設定為 8 英寸,aspect=15 / 8 控制比例,以達到 15 英寸的寬度。
程式碼輸出:
在使用附帶內建參數的 Seaborn 圖表類型時,這個方法特別方便。
在 Python 中使用 matplotlib.pyplot.subplots() 函式設定 Seaborn 圖表圖形大小
matplotlib.pyplot.subplots() 函式提供了一種多功能的方法來設定 Seaborn 圖表的圖形大小。透過使用這個函式建立圖形和座標軸物件,我們可以在產生圖表之前輕鬆自訂尺寸。
matplotlib.pyplot.subplots() 函式用於建立一個圖形和一組子圖。這個函式中的 figsize 參數讓我們可以以英寸為單位指定整個圖形的寬度和高度,個別子圖可以透過 Seaborn 座標軸物件存取,並指派特定的圖表。
當涉及多個子圖時,這個方法特別有用,因為它提供了對整體圖形大小的精細控制。
使用 matplotlib.pyplot.subplots() 設定 Seaborn 圖形大小的範例
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
fig, ax = plt.subplots(figsize=(15, 8))
p = sns.lineplot(data=df, ax=ax)
plt.show()
在這個範例中,關鍵步驟是使用 plt.subplots(figsize=(15, 8)) 來建立具有指定大小(寬 15 英寸、高 8 英寸)的圖形和座標軸。在繪製 Seaborn 圖形時,我們將 ax 參數設定為等於 matplotlib.pyplot.subplots() 傳回的座標軸陣列。
程式碼輸出:
這成功產生了一個具有指定 Seaborn 圖形大小(寬 15 英寸、高 8 英寸)的折線圖。
結論
本文全面探討了在 Python 中設定 Seaborn 圖表圖形大小的各種方法,並附上了一些範例。無論是利用 Seaborn 的 height 和 aspect 等內建參數、matplotlib.pyplot.figure() 函式、matplotlib.pyplot.gcf() 函式,還是 matplotlib.pyplot.subplots(),每種方法都提供了一種獨特的方式來調整圖表的視覺呈現。
掌握這些技巧可以提升您透過視覺上具有影響力的 Seaborn 視覺化傳達複雜資訊的能力,這是資料科學的基石。
作為下一步,探索進階統計視覺化可能是一個令人興奮的方向。具體來說,深入探討用於相關性分析的 Seaborn 熱力圖這個主題,可以提升您的資料視覺化技能。