In [2]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
加載seaborn官方小費數據用於后續演示:
In [3]:
# seaborn官方小費數據
tips = sns.load_dataset("tips")
tips.head(2)
Out[3]:
1 lineplot()繪制散點圖¶
lineplot()主要參數如下:
- x:橫軸數據,可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key)
- y:縱軸數據,可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key)
- hue:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key),seaborn將根據這一列設置不同顏色
- size:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key),seaborn將根據這一列設置不同粗細、大小
- style:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key),seaborn將根據這一列設置不同線型
- data:作圖數據
- palette:顏色面板
- hue_order:字符串組成的list,設置hue后設置各顏色順序
- sizes:size參數設置后,sizes用戶設置粗細、大小的變化范圍
- size_order:字符串組成的list,設置size后,將按照size_order順序設置
- dash:確定如何為style變量的不同級別繪制線條的對象。設置為True將使用默認的短划線代碼,或者您可以將短划線代碼列表或style變量的字典映射級別傳遞給短划線代碼。設置為False將對所有子集使用實線。線段在 matplotlib 中指定: (segment, gap)長度的元組,或用於繪制實線的空字符串。
- markers:布爾型,list或字典,是否為不同的style參數設置不同的標記
- style_order:字符串組成的list,設置style后將按照style_order順序設置線型或散點形狀
- estimator:當一個x值對應對個y值是,如果進行聚合,可以傳遞一個調用方法,例如:np.mean進行求平均值,也可以傳遞None,表示繪制所有
- ci:與估算器聚合時繪制的置信區間的大小。 “sd”表示繪制數據的標准偏差。 設置為 None 將跳過
- n_boot:整型,用於計算置信區間的 bootstrap 數。
- err_style: "band"或"bars",是否用半透明誤差帶或離散誤差棒繪制置信區間。
- err_band:關鍵字參數字典。用於控制誤差線美觀的附加參數。 kwargs傳遞給ax.fill_between或ax.errorbar,具體取決於err_style。
- sort:布爾值,如果為真,則數據將按 x 與 y 變量排序,否則行將按照它們在數據集中出現的順序連接點。
- ax:matplotlib 坐標軸,繪制圖像的坐標對象,否則使用當前坐標軸,通過該參數,配合matplotlib,可繪制更加靈活的子圖
- alpha:設置不透明度
1.1 基本圖像¶
In [26]:
_ = sns.lineplot(x="day", y="total_bill", data=tips)
1.2 hue:根據指定字段設置不同顏色¶
In [27]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, hue="sex")
1.3 size:根據指定字段設置折線粗細¶
In [29]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, size="sex")
1.4 style:根據指定字段設置線型¶
In [33]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, style="sex")
1.5 markers:根據指定字段設置不同標記¶
In [34]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, style="sex", markers=True)
1.6 err_style:繪制錯誤條或錯誤帶¶
在上述繪制的圖像中,如果一個x值對應多個y值,那么折線上下都有錯誤帶出現,指示多個y值的取值范圍,通過err_style參數可以設置顯示錯誤帶或者錯誤條,默認值為“band”表示顯示錯誤帶。
In [36]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, hue="sex", err_style="band")
In [37]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, hue="sex", err_style="bars")
也可以設置為None,表示既不繪制錯誤帶,也不繪制錯誤條:
In [38]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, hue="sex", err_style=None)
2 scatterplot()繪制散點圖¶
scatterplot()主要參數如下:
- x:橫軸數據,可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key)
- y:縱軸數據,可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key)
- hue:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key),seaborn將根據這一列設置不同顏色
- size:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key),seaborn將根據這一列設置不同粗細、大小
- style:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一個key),seaborn將根據這一列設置不同線型或散點形狀
- data:作圖數據
- palette:顏色面板
- hue_order:字符串組成的list,設置hue后設置各顏色順序
- sizes:size參數設置后,sizes用戶設置粗細、大小的變化范圍
- size_order:字符串組成的list,設置size后,將按照size_order順序設置
- markers:布爾型,list或字典,是否為不同的style參數設置不同的標記
- style_order:字符串組成的list,設置style后將按照style_order順序設置線型或散點形狀
- estimator:當一個x值對應對個y值是,如果進行聚合,可以傳遞一個調用方法,例如:np.mean進行求平局,也可以傳遞None,表示繪制所有
- ci:與估算器聚合時繪制的置信區間的大小。 “sd”表示繪制數據的標准偏差。 設置為 None 將跳過
- n_boot:整型,自舉法的數量,用於計算區間的置信度
- alpha:設置不透明度
- ax:matplotlib 坐標軸,繪制圖像的坐標對象,否則使用當前坐標軸,通過該參數,配合matplotlib,可繪制更加靈活的子圖
可見,scatterplot()方法與relplot()、lineplot()方法參數十分類似。
2.1 x, y, data:傳遞數據¶
對於參數x,y,可以直接傳遞一個向量,例如DataFrame中的一列,也可以傳遞一個字符串,不過當傳遞字符串時,必須是data參數中的一個key,也就是說,當x、y是一個字符串時,必須傳遞data參數。
In [4]:
# 以下兩種傳參方式等效:
_ = sns.scatterplot(x=tips["total_bill"], y=tips["tip"])
# _ = sns.relplot(x="total_bill", y="tip", data=tips)
也可以不傳遞x, y,直接傳遞data,這時,seaborn將以行索引為x,每一列為y,分別進行繪圖:
In [6]:
_ = sns.scatterplot(data = tips[['total_bill', 'tip', 'size']])
2.2 hue:根據指定字段設置不同顏色¶
根據是否抽煙,分別繪制不同顏色圓點:
In [7]:
#消費總金額和小費金額的散點圖
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, hue='smoker')
2.3 size:根據指定字段設置圓點(折線)大小粗細¶
In [8]:
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, size='smoker')
2.4 style:根據指定字段設置線型或散點形狀¶
In [9]:
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, style='smoker')
2.5 alpha:設置不透明度¶
In [44]:
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, hue='smoker', alpha=0.5)
2.6 ax:繪制多樣化子圖¶
relplot()方法通過row或col參數雖然可以繪制子圖,但是,子圖只能是統一類型圖像,但在lineplot()和scatterplot()方法中,通過ax參數,可以繪制多樣化的子圖。
In [3]:
fig, ax =plt.subplots(1,2)
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, hue='smoker', ax=ax[0])
_ = sns.lineplot(x="size", y="total_bill", data=tips, hue='smoker', ax=ax[1])