matplotlib+seaborn圖形繪制-學習整理


1、設置figure對象

  命令:plt.figure(figsize=(10,5),frameon=False,clear=True)

    參數說明:matplotlib.pyplot.figure(

      num:圖形序號(ID) ,不指定時自動遞增。如果該圖形已存在,則激活相應圖形

      figsize :圖形的長寬,美寸, tuple缺省為matplotlib.rcParams ["figure. figsize"1]

      dpi :圖形分辨率,即每英寸所表示的像素數,缺省為rc figure.dpi保存圖像時的dpi參數為matplotlib.rcParams ["savefig.dpi"]

      facecolor :圖形背景色,缺省為rc figure. facecolor

      edgecolor :圖形邊框色,缺省為rc figure.edgecolor

      frameon = True :是否繪制圖形外框架

      Figureclass :使用自定義的matplotlib.figure.Figure類

      clear = False :圖形已存在時是否清除原有對象)

2、散點圖

  2.1、普通散點圖

    命令:seaborn.scatterplot(x=ccss.s3,y=ccss.index1,hue=ccss.s2,legend='full',size=ccss.Qs9,alpha=0.1)

    參數說明:seaborn.scatterplot(

      x, y, hue : 按照hue進行分組;data :用於繪圖的數據框

      hue_order :分類變量/hue變量類別取值的繪圖順序

      estimator = None :對y變量的匯總方式,為None時繪制所有原始值

      legend = 'brief' :圖例的顯示方式:"brief", "full", or False, optional

     基本繪圖設定:  

      size :線段寬度所對應的變量/數值;sizes : list, dict, or tuple,用於進一步設置線寬如何確定

      size_norm :進一步指定數值的標准化方法用於線段寬度;size_order : list,線寬在各線段中的使用順序

      style :線段形狀所對應的變量/數值;style_order : list,線形的使用順序

      markers :數據點的顯示方式:boolean, list, or dictionary, optional

      palette : hue變量所對應的調色盤設定, dict/seaborn調色盤格式

      hue_norm :當hue變量為數值時,可進一步指定數值的標准化方法用於顏色映射

      alpha : float,散點的不透明度比例

      

  2.2、回歸趨勢散點圖

  1、lmplot () :功能比較完備,可考察各種常見的線性/曲線回歸趨勢,可按照分類變量分組/分行列面板,並同時計算可信區間。

    命令:seaborn.lmplot("s3","index1",data=ccss,x_bins=10,x_estimator=np.mean)

    參數說明:seaborn.lmplot(

        x, y, data;hue:數據分組;palette : palette name, list, or dict, optional

        height:高度(in inches);aspett:寬高比

        markers : matplotlib marker,散點標記,有分組變量時提供list

        (x,y)_jitter : floats,繪圖時對散點加入隨機噪聲,當數值為離散值時可以改善散點圖效果

        truncate =False : bool,是否只在x取值范圍內制回歸線 

        order : int,所擬合曲線的階數,大於1時使用numpy.polyfit進行曲線擬合

        logistic : bool,是否擬合logistic回歸曲線

        lowess : bool,是否擬合lowess曲線

        robust : bool,是否擬合穩健回歸

        logx : bool,是否擬合y ~ 1og (x)的對數曲線,但仍按照原始的x/y數值輸出

      基本繪圖設定:

        x_estimator :對x運用該函數並顯示結果

        x_bins : int/vector,對變量x進行分箱,然后計算其集中趨勢和ci該操作只影響散點圖,不影響回歸趨勢線的估計

        x_ci : "ci", "sd", int in [0, 100] or None,計算的可信區間大小為ci時,另外使用ci參數給出百分比

        scatter : bool,是否繪制散點圖

        fitreg : bool,是否擬合回歸模型

        n_boot : int, Bootstrap抽樣次數

        units: variable name in data,抽樣基本單位對應的變量

        (x, y}_partial : strings in data/matrices,繪圖/擬合時希望控制的協變量注意此處x/y的設定方向和一般使用習慣相反!

        {scatter, line)_kws : dict, plt.scatter和plt.plot中的其余參數

        

  2、線性回歸殘差圖:rs = np.random.RandomState(7)

           x = rs.normal(2, 1, 75)

           y = 2 + 1.5 * x + rs.normal(0, 2, 75)

           seaborn.residplot(x, y, lowess=True, color="g")

       

  3、regplot ():可看作lmplot()的一個簡單子集,繪制時使用一個Axes對象,無分行列面板考察的功能。

  4、jointplot():調用regplot()同時呈現回歸趨勢和單變量分布特征。

    命令:seaborn.jointplot(x="s3",y="index1",data=ccss,kind="reg",color="blue")

    參數說明:seaborn.jointplot(x, y:繪圖用數據,可以是數據框內的變量名

        data =None :數據框名稱

        kind = 'scatter':繪制的圖形種類{scatter"  "reg"  "resid"  "kde"  "hex" }

        stat_func = :需要計算的統計量

      圖形格式:

        color : matplotlib color;size =6:圖形大小(默認方形)

        ratio =5 :聯合圖和邊上的邊際分布圖寬度比例

        space =0.2:聯合圖和邊際分布圖中間的縫隙寬度

        dropna = True :是否刪除缺失數據

        {x, y}lim : two-tuples, x/y軸的刻度范圍

        {joint, marginal, annot}_kws : dicts,各圖形元素的屬性設定返回: JointGrid對象。

      seaborn.JointGrid對象的方法:

        annotate (func t, template, stat, 1oc]) 添加指定的統計量作為注解。

        plt(joint_func, marginal funct, annotfunc) 繪制完整圖形。

        plot_joint (func, **kwargs) 繪制x和y的雙變量圖。

        plot-marginals (func, **kwargs) 分別繪制x和y的單變量圖。

        savefig (*args, **kwargs) 保存圖形。

        set axis labels ( [xlabel, ylabel])設置軸標簽

        

  命令:seaborn.jointplot(x="s3",y="index1",kind="kde",color="m",data=ccss).plot_joint(plt.scatter,c="w",s=30,linewidth=1,marker="+")

        

  5、pairplot():將regplot ()和PairGrid()相結合,實現在矩陣中兩兩考察回歸趨勢的功能。

    命令:seaborn.pairplot(data=ccss,x_vars="s3",y_vars=["index1a","index1b"],kind="reg",hue="s2",height=4,aspect=1.5).map_upper(seaborn.scatterplot)

    參數說明:seaborn.pairplot(

        data:用於繪圖的數據框;vars :可選,需要分析的變量列表,默認分析全部數值變量列。

        {x, y}_vars :用於分析的行/列變量,此時會生成非對稱的矩陣圖。

        kind ='scatter' :繪圖種類, ('scatter', 'reg'}

        diag_kind ='auto' :主對角線繪圖種類, ('hist', 'kde'}

      散點分組:

        hue:變量名字符串,該變量將在繪圖時用顏色將散點進行分組。

        hue_order :分組變量各取值繪圖時在調色板中的順序, list格式。

        palette : hue變量所對應的調色盤設定, dict/seaborn調色盤格式。

      格式設定:

        markers :散點標記, hue分組時以1ist格式提供。

        height =2.5 :面板高度,英寸;aspect =1:面板寬度與高度之比, aspect * size即為面板寬度。

        dropna = True :繪圖前是否刪除缺失值。

        {plot, diag, grid}_kws : dicts, keyword arguments

      seaborn.PairGrid對象的方法:

        add-legend ([legend-data, title, labelorder]) 繪制圖例

        map (func, **wargs) 指定所有單元格繪制的圖形種類

        map_liag (func, **kwargs) 指定主對角線單元格繪制的單變量圖形種類

        map-lower (func, **kwargs) 指定下三角單元格繪制的雙變量圖形種類

        map_offdiag (func, **kwargs) 指定非主對角線單元格繪制的雙變量圖形種類

        map_upper (func, **kwargs) 指定上三角單元格繪制的雙變量圖形種類

        savefig (*args, **kwargs) 保存圖形

        set (**kwargs) 設置每一個subplot Axes對象的屬性

        

3、條圖

  panads繪制:pd.value_counts(ccss.s5).plot.bar()

  matplotlib繪制:plt.bar(pd.value_counts(ccss.s5).index,pd.value_counts(ccss.s5))

  seaborn繪制:seaborn.barplot(x=pd.value_counts(ccss.s5).index,y=pd.value_counts(ccss.s5),order=['學生','公務員'])

    seaborn參數說明:seaborn.barplot(

      x, y,  names of variables in data ;data: DataFrameorder, hue

      order :分類變量/hue變量各類別取值的繪圖順序

    可信區間計算:

      ci=95 : float or "sd" or None,希望繪制的可信區間寬度

      n_boot = 1000 :計算ci時的bootstrap抽樣次數。

      units :用於確定抽樣單元大小的變量。

    誤差條格式:

      errcolor ='0.26, : CI線段的顏色, matplotlib color

      errwidth : CI線段的粗細, float

      capsize :誤差條頂端的寬度,占直條繪圖區的比例, float

       

4、餅圖、半圓、圓環

    更詳細參考鏈接:https://www.cnblogs.com/biyoulin/p/9565350.html

    pandas繪制圓:ccss.s5.value_counts().plot.pie()

    matplotlib繪制圓:plt.pie(ccss.s5.value_counts(),labels=ccss.s5.value_counts().index,explode=[0,0.5,1,0.5,0,0,0,0,0,0,0],shadow=True,startangle=90,radius=2,counterclock=False,rotatelabels=True)

    matplotlib繪制半圓:plt.pie(ccss.s5.value_counts(normalize=True)/2,labels=ccss.s5.value_counts().index)

    matplotlib繪制圓環:plt.pie(ccss.s5.value_counts(),labels=ccss.s5.value_counts().index,);plt.pie([1],colors=['#ffffff'],radius=0.6)

       參數說明:matplotlib.pie(

          explode:突出的距離,

          shadow:陰影,

          startangle:開始的度數,

          radius:半徑,

          counterclock:逆時針開始旋轉,

          rotatelabels:不旋轉標簽)

    

5、條帶圖

  seaborn命令:seaborn.stripplot(y=ccss.s3[:200])

    參數說明:seaborn.stripplot(

        x, y, hue :繪圖中所使用的分類/連續變量/顏色分組變量名;data:數據框名稱

      繪制細節:

        order, hueorder : hue變量各類別取值的繪圖順序

        jitter = True :是否對散點位置進行隨機抖動以避免重疊

        orient : "v" 1 "h",條帶繪制方向

      其他設定:

        color : matplotlib顏色設定

        palette :調色盤設定

        size : float, optional 

        linewidth: float, optional 

        ax : matplotlib Axes, optional)

      

6、直方圖、kDE圖、地毯圖

    pandas繪制直方圖:ccss.s3.plot.hist()

    matpoltlib繪制直方圖:plt.hist(ccss.s3)

    seaborn繪制直方圖:seaborn.distplot(ccss.s3,kde=False)

    seaborn繪制KDE圖(更加精確):seaborn.kdeplot(ccss.s3,bw=1,label="bw=1")

      參數說明:seaborn.distplot(

          bins = None :組段數, matplotlib.pyplot.hist ()中使用的參數

          默認按照Ereedman-Diaconis自動計算

        繪制圖形種類:

          hist = True :直方圖

          kde = True : KDE圖

          rug = False :地毯圖

        圖形細節:

          vertical = False :是否水平顯示圖形

          normhist = False :縱軸顯示概率密度而不是原始頻數

        其他設定:

          {hist, kde, rug, fit}_kws :字典類型,自定義對應圖形元素的各類屬性

          color : matplotlib顏色代碼,指定繪圖元素的顏色

          axlabel :軸標簽

          label :圖例中對應相應圖形元素的標簽

          ax:將圖形繪制在指定的Aes對象內

          

7、箱圖

     seaborn繪制箱圖:seaborn.boxplot(y=ccss.index1,saturation=0.3,width=0.5,linewidth=3,fliersize=10)

      參數說明:seaborn.boxplot(

          x, y, hue : names of variables in data or vector data, optional 

          data: DataFrame, array, or list of arrays, optional

          orient: "y" 1 "h", optional

          color : matplotlib color, optional

          palette : palette name, list, or dict, optional

          saturation =0.75 : float,箱體顏色的飽和度

          width=0.8 : float,箱體寬度所占比例

          fliersize= 5 : float,離群值散點大小

          linewidth = None : float,框線寬度

          whis =1.5 : float,離群值確定標准,距離IQR上下界的倍數)

          

    seaborn繪制增強箱圖:seaborn.boxenplot(x=ccss.s2,y=ccss.s3,scale='area',outlier_prop=0.1)

      參數說明:seaborn.boxenplot(

        x, y, hue等參數

        k_depth = 'proportion' :具體的箱體位置算法

        "proportion" "tukey" | "trustworthy"

        scale = 'exponential’ :箱體寬度和樣本量的對應關系

        "linear":等比例減少

        "exponential":對應箱體外側未覆蓋的樣本比例

        "area":對應箱體本身覆蓋的樣本比例

        outlier_prop=0.007 :離群值在樣本中的比例

                 

8、提琴圖

    seaborn繪制提琴圖:seaborn.violinplot(y=ccss.s3)

      參數說明:seaborn.violinplot(

            x-None, y-None, hue-None, data-None, order-None, hue order-None

            bw= 'scott': KDE圖的具體計算方法或者核寬度;{'scott', 'silverman', float}

            cut =2:繪圖時是否超越網端的極值,設為0時嚴格限定在觀測值范圍內

            scale = 'area’, :各KDE圖形設置為相同面積/按照頻數設定寬度/相同寬度;{"area", "count", "width"}

            gridsize =100 :用於形成KDE曲線的散點數,越多越光滑

            width =0.8 :圖形占的寬度比例inner ='box, :提琴圖內部呈現的圖形種類,箱圖/分位數/原始數據。{"box", "quartile", "point", "stick", None}

            saturation =0.75 :圖形色彩飽和度。)

        

9、線圖

    seaborn繪制線圖:seaborn.lineplot('s4','index1',data=ccss,hue='s2',ci=None,style='s0',size='s0',)

      參數說明:seaborn.lineplot(

        注意:x軸y軸需要連續變;x, y, hue : names of variables in data;data:用於繪圖的數據框

          order, hue_order :分類變量/hue變量各類別取值的繪圖順序

          estimator = 'mean' :對y變量的匯總方式,為None時繪制所有原始值

          sort =True:繪圖前數據是否按照x和y軸變量排序,否則將按照數據原始順序繪制絕大多教情況下,按照原始數據繪制的圖形並無意義

          legend = 'brief' :圖例的顯示方式,"brief", "full", or False

        格式設定:

          size :線段寬度所對應的變量/數值

          sizes : list, dict, or tuple,用於進一步設置線寬如何確定

          size-norm :進一步指定數值的標准化方法用於線段寬度

          size-order : list,線寬在各線段中的使用順序

          style :線段形狀所對應的變量/數值

          dashes = True :針對style變量的線形繪制設定;boolean, list, or dictionary

          style_order : list,線形的使用順序

          markers :數據點的顯示方式:boolean, list, or dictionary

          palette : hue變量所對應的調色盤設定, dict/seaborn調色盤格式

          hue_norm :當hue變量為數值時,可進一步指定數值的標准化方法用於顏色映射

       可信區間計算:

          ci = 95: float or "sd" or None,希望繪制的可信區間寬度

          n_boot=1000 :計算CI時的bootstrap抽樣次數

          urits :用於確定抽樣單元大小的變量

          err_style = 'band': "band" or "bars",代表c1的誤差條的顯示方式

          err_band : dict of keyword arguments,進一步控制誤差條的顯示方式;具體參數來自於ax.fill between或ax.errorbar

         

10、誤差圖、面積圖

    seaborn繪制誤差圖:seaborn.pointplot(ccss.time,ccss.index1,capsize=.1)

        

    標准的誤差圖:seaborn.pointplot(ccss.time,ccss.index1,capsize=.1,join=False)

        

    分組、不需要可信區間:seaborn.pointplot(ccss.time,ccss.index1,data=ccss,capsize=.1,hue='s0',ci=None)

        

    增加線形修飾:seaborn.pointplot(ccss.time,ccss.index1,data=ccss,capsize=.1,hue='s0',ci=None,linestyles=['-','--',':'])

        

    錯開ci的位置便於觀察:seaborn.pointplot(ccss.time,ccss.index1,data=ccss,capsize=.1,hue='s0',linestyles=['-','--',':'],dodge=True)

        

    panads繪制面積圖:ccss.groupby('a3').index1.mean().plot.area()

        

     按照百分比繪圖:pd.crosstab(index=ccss.s4,normalize='index',columns=ccss.O1).plot.area()

        

11、pp圖

    pp圖是將變量實際分布累計概率與所指的理論分布累計概率分別作為橫縱坐標而繪制的散點圖,用於直觀地檢測樣本數據是否符合某一概率分布

      plt.scatter(df.cprob,df.cprob0)

    

12、qq圖

    Q-Q圖只是直觀觀察,更精確的考察需要使用假設檢驗,Q代表分位數,將兩個概率分布同一個位置的分位數值作為平面坐標進行繪圖,該分位值就構成平面中的一個散點,而全體分位數的比較結果就可以構成一張圖形。

      from scipy import stats

      stats.probplot(ccss.s3,plot=plt)

     

13、pareto圖

    pareto本質上是原始指標的條圖和累計百分比的線圖的組合,繪制關鍵點:計算相應的累計百分比,將相應的兩個圖形用雙軸圖的形式組合起來

      data.plot.bar(color = 'b')

      prob.plot(color = 'g',secondary_y = True,style = '-0',linewidth =2)

     

14、雷達圖    

    雷達圖屬於極坐標的范疇,用極坐標繪制即可

data = ccss.s5.value_counts(sort=False,normalize=True)
# 生成繪圖用的弧度數據,注意跳開終點數值
import numpy as np
# 將數據等分
angles = np.linspace(0,2*np.pi,len(data),endpoint=False)
# 添加終點值,使曲線坐標閉合
data1 = np.concatenate((data,[data[0]]))
angles = np.concatenate((angles,[angles[0]]))
fig = plt.figure()
ax = fig.add_subplot(111,polar=True)
ax.plot(angles,data1)

      

15、復合餅圖    

# 生成繪圖數據
data = pd.crosstab(ccss.s2, ccss.s5)
# 控制圓環配色,考慮使用等分的husl配色方案以免重復
colorlist = seaborn.color_palette('husl', n_colors=len(data.columns))
# 設定圓環寬度
size = 0.3
plt.pie(data.iloc[0, :], radius=1, wedgeprops=dict(width=size, edgecolor='w'), colors=colorlist, labels=data.columns)
plt.pie(data.iloc[0, :], radius=1 - size, wedgeprops=dict(width=size, edgecolor='w'), colors=colorlist )

      

16、熱圖

plt.figure(figsize=(10,10))
# margins對數據進行排序
data = ccss.pivot_table(index='s9',columns='s5',values='index1',margins=True)
# 去掉匯總列
data = data.iloc[:,:-1]
# 對數據進行排序
data.sort_values(by='All',axis='columns',inplace=True)
seaborn.heatmap(data.iloc[:-1,:],square=True,cmap='YlGnBu',annot=True,fmt='.3g')

      參數說明:seaborn.heatmap(

          data : rectangular dataset,用於繪制熱圖的數據框/ndarray,如果提供Pandas數據框,則行/列名稱將用於繪圖,成為行/列標簽

        調色板:

          vmin, vmax : floats, colormap的取值范圍

          cmap: matplotlib colormap名稱

          center: float, colormap的中間值

          robust: bool, 當vmin或vmax缺省時,是否使用分位數而不是極值來更穩健的估計colormap range

        注釋與標簽:

          annot : bool or rectangular dataset,是否在單元格中顯示數值

          fmt = ".2g' : string,添加注釋時的格式

          annot kws: dict of key, value mappings, optional

          xticklabels, yticklabels = 'auto' :行/列標簽的設定方式"auto", bool, list-like, or int, optional

        框線與色帶:

          lnewidths =0: float,格框線寬度

          linecolor = 'white' : col,單元格框線顏色

          cbar = True : boolean,是否繪制色帶

          cbar_kws: dict of key, Keyword arguments for fig.colorbar.

          cbar_ax :用於繪制色帶的Axes對象名稱,否則將在主Axes對象中繪制

          square : boolean,是否強制設定每個單元格為正方形

      

17、多邊形

    matplotlib.patches.circle(center = (0.0, 0.0), radius = 1.0,)  圓形:中心坐標,半徑,是否只讀

    matplotlib.patches.Ellipse(xy, width, height,angle = 0.0)  橢園:中心坐標,寬度,高度,起始角度

    matplotlib.patches.Rectangle(xy, width, height, angle = 0.0)  矩形:中心坐標,寬度,高度,起始角度

    matplotlib.patches.RegularPolygon(xy, numVertices, radius = 5, orientation = 0)  正多邊形:中心坐標,邊數,距離中心的長度,起始弧度

    matplotib.patches.Wedge(center, r, theta1, theta2, width = None)  扇形:中心坐標,半徑,起始角度,終止角度,弧形寬度

fig,ax = plt.subplots()
circle  = patches.Circle(np.array([0,0]), radius = 1.0,color='g')
RegularPolygon = patches.RegularPolygon(np.array([0,0]),9,0.2)
ax.add_patch(circle)
ax.add_patch(RegularPolygon)
# 設置等比例
ax.axis('equal')

      


免責聲明!

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



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