seaborn學習筆記(二):散點圖、線圖


 

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]:
 
  total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 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]) 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM