數據可視化(3)-Seaborn系列 | 折線圖lineplot()

  • 2019 年 10 月 4 日
  • 筆記

本篇是《Seaborn系列》文章的第3篇-折線圖。

案例程式碼:歡迎給個star

https://github.com/Vambooo/SeabornCN

折線圖

注意:數據一定是通過DataFrame中傳送的

函數原型

seaborn.lineplot(x=None, y=None, hue=None,                   size=None, style=None, data=None,                   palette=None, hue_order=None, hue_norm=None,                   sizes=None, size_order=None, size_norm=None,                   dashes=True, markers=None, style_order=None,                   units=None, estimator='mean', ci=95, n_boot=1000,                   sort=True, err_style='band', err_kws=None,                   legend='brief', ax=None, **kwargs)

參數解讀

data:是DataFrame類型的;    可選:下面均為可選    x,y:數據中變數的名稱;    hue:數據中變數名稱(比如:二維數據中的列名)  作用:對將要生成不同顏色的線進行分組,可以是分類或數據。    size:數據中變數名稱(比如:二維數據中的列名)  作用:對將要生成不同寬度的線進行分組,可以是分類或數據。    style:數據中變數名稱(比如:二維數據中的列名)  作用:對將生成具有不同破折號、或其他標記的變數進行分組。    palette:調試板名稱,列表或字典類型  作用:設置hue指定的變數的不同級別顏色。    hue_order:列表(list)類型  作用:指定hue變數出現的指定順序,否則他們是根據數據確定的。    hue_norm:tuple或Normalize對象    sizes:list dict或tuple類型  作用:設置線寬度,當其為數字時,它也可以是一個元組,指定要使用的最大和最小值,會自動在該範圍內對其他值進行規範化。    units:對變數識別抽樣單位進行分組,使用時,將為每個單元繪製一個單獨的行。    estimator:pandas方法的名稱或回調函數或者None  作用:用於在同一x水平上聚合y變數的多個觀察值的方法,如果為None,則將繪製所有觀察結果。

案例教程

import pandas as pd  import numpy as np  import matplotlib.pyplot as plt  %matplotlib inline    from sklearn.datasets import load_diabetes    def fun(x):      if x >0:          return 1      else:          return 0  # sklearn自帶數據 diabetes 糖尿病數據集  diabetes=load_diabetes()  data = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)  #只抽取前80個數據  df=data[:80]  #由於diabetes中的數據均已歸一化處理過,sex列中的值也歸一化,現將其劃分一下,大於0的設置為1,小於等於0的設置為0  df['sex']=df['sex'].apply(lambda x: fun(x))  #展示前5條數據  df[:5]
import pandas as pd  import matplotlib.pyplot as plt  import seaborn as sns; sns.set()  %matplotlib inline    from sklearn.datasets import load_diabetes    def fun(x):      if x >0:          return 1      else:          return 0  # sklearn自帶數據 diabetes 糖尿病數據集  diabetes=load_diabetes()  data = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)  #只抽取前80個數據  df=data[:80]  #由於diabetes中的數據均已歸一化處理過,sex列中的值也歸一化,現將其劃分一下,大於0的設置為1,小於等於0的設置為0  df['sex']=df['sex'].apply(lambda x: fun(x))    """  案例1:繪製帶有誤差帶的單線圖,顯示置信區間  """  ax = sns.lineplot(x="age", y="s4",data=df)  plt.show()
import pandas as pd  import matplotlib.pyplot as plt  import seaborn as sns; sns.set()  %matplotlib inline    from sklearn.datasets import load_diabetes    def fun(x):      if x >0:          return 1      else:          return 0    # sklearn自帶數據 diabetes 糖尿病數據集  diabetes=load_diabetes()  data = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)  #只抽取前80個數據  df=data[:80]  #由於diabetes中的數據均已歸一化處理過,sex列中的值也歸一化,現將其劃分一下,大於0的設置為1,小於等於0的設置為0  df['sex']=df['sex'].apply(lambda x: fun(x))  """  案例2:繪製帶有誤差帶的單線圖,顯示置信區間  """  dd=[df['s1'],df['s2'],df['s3'],df['s4']]  ax = sns.lineplot(data=dd)  plt.show()
import pandas as pd  import matplotlib.pyplot as plt  import seaborn as sns; sns.set()  %matplotlib inline    from sklearn.datasets import load_diabetes    def fun(x):      if x >0:          return 1      else:          return 0    # sklearn自帶數據 diabetes 糖尿病數據集  diabetes=load_diabetes()  data = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)  #只抽取前80個數據  df=data[:80]  #由於diabetes中的數據均已歸一化處理過,sex列中的值也歸一化,現將其劃分一下,大於0的設置為1,小於等於0的設置為0  df['sex']=df['sex'].apply(lambda x: fun(x))  """  案例3:設置hue為sex,按照sex分組,並顯示不同顏色  """  sns.lineplot(x="age", y="s4", hue="sex",data=df)  plt.show()
import pandas as pd  import matplotlib.pyplot as plt  import seaborn as sns; sns.set()  %matplotlib inline    from sklearn.datasets import load_diabetes    def fun(x):      if x >0:          return 1      else:          return 0    # sklearn自帶數據 diabetes 糖尿病數據集  diabetes=load_diabetes()  data = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)  #只抽取前80個數據  df=data[:80]  #由於diabetes中的數據均已歸一化處理過,sex列中的值也歸一化,現將其劃分一下,大於0的設置為1,小於等於0的設置為0  df['sex']=df['sex'].apply(lambda x: fun(x))  """  案例4:使用顏色和線型顯示分組變數  """  sns.lineplot(x="age", y="s1",hue="sex", style="sex", data=df)  plt.show()
import pandas as pd  import matplotlib.pyplot as plt  import seaborn as sns; sns.set()  %matplotlib inline    from sklearn.datasets import load_diabetes    def fun(x):      if x >0:          return 1      else:          return 0  # sklearn自帶數據 diabetes 糖尿病數據集  diabetes=load_diabetes()  data = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)  #只抽取前80個數據  df=data[:80]  #由於diabetes中的數據均已歸一化處理過,sex列中的值也歸一化,現將其劃分一下,大於0的設置為1,小於等於0的設置為0  df['sex']=df['sex'].apply(lambda x: fun(x))  """  案例5:使用標記來標識組,而不用破折號來標識組:設置markers為True,設置dashes為False  """  sns.lineplot(x="age", y="s1",hue="sex", style="sex", markers=True, dashes=False, data=df)  plt.show()
import pandas as pd  import matplotlib.pyplot as plt  import seaborn as sns; sns.set()  %matplotlib inline    from sklearn.datasets import load_diabetes    def fun(x):      if x >0:          return 1      else:          return 0  # sklearn自帶數據 diabetes 糖尿病數據集  diabetes=load_diabetes()  data = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)  #只抽取前80個數據  df=data[:80]  #由於diabetes中的數據均已歸一化處理過,sex列中的值也歸一化,現將其劃分一下,大於0的設置為1,小於等於0的設置為0  df['sex']=df['sex'].apply(lambda x: fun(x))  """  案例6:顯示錯誤條,而不顯示錯誤帶  """  sns.lineplot(x="age", y="s5",hue="sex",err_style="bars", ci=68, data=df)  plt.show()
import numpy as np  import pandas as pd;  import matplotlib.pyplot as plt  # 構建 時間序列數據 從2000-1-31開始,以月份為間隔,構建100條記錄  index = pd.date_range("1 1 2000", periods=100,freq="m", name="date")  data = np.random.randn(100, 4).cumsum(axis=0)    # 構建5列數據,列名分別為data a b c d  wide_df = pd.DataFrame(data, index, ["a", "b", "c", "d"])  """  案例7:繪製時間序列數據  """  sns.lineplot(data=wide_df)  plt.show()

案例地址

案例程式碼已上傳:Githubhttps://github.com/Vambooo/SeabornCN

整理製作:數據分析與可視化學研社

更多分享,請關注公眾號