1. 程式人生 > 實用技巧 >Seaborn的6個簡單技巧

Seaborn的6個簡單技巧

作者|Zolzaya Luvsandorj
編譯|VK
來源|Towards Datas Science

在這篇文章中,我們將探討一些簡單的方法來定製你的圖表,使它們在美學上更好。我希望這些簡單的技巧能幫助你得到更好看的圖。

基線圖

本文中的指令碼在Jupyter筆記本中的python3.8.3中進行了測試。

讓我們使用Seaborn內建的penguins資料集作為樣本資料:

# 匯入包
import matplotlib.pyplot as plt
import seaborn as sns

# 匯入資料
df = sns.load_dataset('penguins').rename(columns={'sex': 'gender'})
df

我們將使用預設圖表設定構建標準散點圖,以將其用作基線:

# 圖
sns.scatterplot(data=df, x='body_mass_g', y='bill_length_mm', 
                alpha=0.7, hue='species', size='gender')

我們將看到這個圖如何隨著每一個技巧而改變。


技巧

你將看到,前兩個技巧用於單個繪圖,而其餘四個技巧用於更改所有圖表的預設設定。

技巧1:分號

你有沒有注意到在上一個圖中,文字輸出就在圖表的正上方?抑制此文字輸出的一個簡單方法是在繪圖末尾使用;

# 圖
sns.scatterplot(data=df, x='body_mass_g', y='bill_length_mm', 
                alpha=0.7, hue='species', size='gender');

只需在程式碼末尾新增;就可以得到更清晰的輸出。

技巧2:plt.figure()

繪圖通常可以從調整大小中獲益。如果我們想調整大小,我們可以這樣做:

# 圖
plt.figure(figsize=(9, 5))
sns.scatterplot(data=df, x='body_mass_g', y='bill_length_mm', 
                alpha=0.7, hue='species', size='gender');

當我們調整大小時,圖例移到了左上角。讓我們將圖例移到圖表之外,這樣它就不會意外地覆蓋資料點:

# 圖
plt.figure(figsize=(9, 5))
sns.scatterplot(data=df, x='body_mass_g', y='bill_length_mm', 
                alpha=0.7, hue='species', size='gender')
plt.legend(loc='upper right', bbox_to_anchor=(1.2, 1));

如果你想知道如何知道figsize()bbox_to_anchor()使用什麼數的字組合,則需要嘗試哪些數字最適合繪圖。

技巧3:sns.set_style()

如果不喜歡預設樣式,此函式有助於更改繪圖的整體樣式。這包括軸的顏色和背景。讓我們將樣式更改為whitegrid,並檢視列印外觀如何更改:

# 更改預設樣式
sns.set_style('whitegrid')

# 圖
plt.figure(figsize=(9, 5))
sns.scatterplot(data=df, x='body_mass_g', y='bill_length_mm', 
                alpha=0.7, hue='species', size='gender')
plt.legend(loc='upper right', bbox_to_anchor=(1.2, 1));

這裡還有一些其他的選擇可以嘗試:“darkgrid”、“dark”和“ticks”來找到你更喜歡的那個。

技巧4:sns.set_context()

在前面的圖中,標籤尺寸看起來很小。如果不喜歡預設設定,我們使用sns.set_context()可以更改上下文引數。

我使用這個函式主要是為了控制繪圖中標籤的預設字型大小。通過更改預設值,我們可以節省時間,而不必為單個繪圖的不同元素(例如軸標籤、標題、圖例)調整字型大小。讓我們把上下文改成“talk”,再看看圖:

# 預設上下文更改
sns.set_context('talk')

# 圖
plt.figure(figsize=(9, 5))
sns.scatterplot(data=df, x='body_mass_g', y='bill_length_mm', 
                alpha=0.7, hue='species', size='gender')
plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1));

它更容易辨認,不是嗎?另一個可以嘗試的選項是:“poster”,這將增加預設大小甚至更多。

技巧5:sns.set_palette()

如果你想將預設調色盤自定義為你喜歡的顏色組合,此功能非常方便。我們可以使用Matplotlib中的彩色對映。這裡是從顏色庫中選擇的。讓我們將調色盤更改為“rainbow”並再次檢視該圖:

# 更改預設調色盤
sns.set_palette('rainbow')

# 圖
plt.figure(figsize=(9, 5))
sns.scatterplot(data=df, x='body_mass_g', y='bill_length_mm', 
                alpha=0.7, hue='species', size='gender')
plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1));

如果找不到你喜歡的Matplotlib顏色對映,可以手動選擇顏色來建立自己獨特的調色盤。