zoukankan      html  css  js  c++  java
  • matplotlib+seaborn样式管理-学习整理

    1、子图设置

    #在一个figure对象中添加一个子图
    seaborn.pointplot(x=ccss.time, y=ccss.index1, capsize=.1)
    fig = plt.gcf()
    fig.add_axes([0, 0.2, 1, 0.2])
    seaborn.distplot(ccss.index1, kde=False)

          参数说明:matplotlib.figure.Figure.add-axes(

            rect :代表插入子图对象大小的序列。[left, bottom, width, height]

            projection :子图使用的坐标体系。['aitoff' 1 'hammer' | 'lambert' 1 'mollweide' I 'polar' 1 rectilinear']

            polar : boolean,为True时等价于projection ='polar'

           

    # 数组方式指定子图,subplot(224)表示2乘以2的网格的第4张图
    fi ,axes=plt.subplots(2,2)
    seaborn.boxenplot(y=ccss.index1,ax=axes[0,0])
    plt.subplot(224)
    plt.plot([11,8,5,2])
    plt.show()

        参数说明:matplotlib.pyplot.subplots(

            nrows /ncols =1:图形网格的行/列数

            sharex, sharey = False :在图组中是否共用行/列坐标轴

            True or 'all':对应的单元格都将共用行/列坐标轴

            False or 'none':各单元格独立设定行/列坐标轴'

            row:同一行的单元格将共用行/列坐标轴、

            col:同一列的单元格将共用行/列坐标轴

            squeeze = True :是否尽量简化返回的Axes对象False时即使只有一个单元格,也返回二维数组

            subplotkw : dict,未来调用add-subplot ()建立子图时需要传送的参数)

            

    2、网格设置 

    fig, axes = plt.subplots(1, 2, sharey=True)
    # 进一步的细节设定,top总高度的70%,wspace间距宽
    plt.subplots_adjust(top=0.7, wspace=0.1)
    seaborn.boxplot(y=ccss.index1a, ax=axes[0])
    seaborn.boxplot(y=ccss.index1b, ax=axes[1])
    # 文字的位置,xy表示位置,annotation_clip=Flase注解不要在背景框,size字体大小
    plt.annotate('现状指数和预期指数的对比', xy=(0, 200), annotation_clip=False, size=16)
    plt.show()

          参数说明:matplotlib.pyplot.subplots_adjust(

              left = 0.125 # the left side of the subplots of the figure

              right =0.9 # the right side of the subplots of the fiqure

              bottom = 0.1 # the bottom of the subplots of the fiqure

              top = 9.9 # the top of the subplots of the fiqure

              wspace = 0.2 # the amount of width reserved between subplots,

                # as a fraction of the average axis wi.dth

              hspace = 0.2 # the amount of height reserved between subplots.

                # as a fraction of the average axis height

              

    ax1 = plt.subplot2grid((4, 4), (0, 0), colspan=10)
    ax2 = plt.subplot2grid((4, 4), (1, 1), rowspan=10)
    plt.show()

        参数说明:matplotlib.gridspec.GridSpec(

              nrows/ncols :网格的行/列数

              figure :指定网格将被放置的Figure对象

              left/bottom/right/top :网格四边所对应的图形长宽比例

              wspace/hspace :周边留空大小

              width_ratios/height_ratios :各行/列的大小比例)

              

    import matplotlib.gridspec as gridspec
    # 整个图width_ratios宽比值为1:2,
    gs = gridspec.GridSpec(2, 2, width_ratios=[1, 2], height_ratios=[4, 1])
    ax11 = plt.subplot(gs[0])
    ax21 = plt.subplot(gs[1])
    ax3 = plt.subplot(gs[2])
    plt.show()

          参数说明:matplotlib.gridspec.GridSpec(

                nrows/ncols :网格的行/列数

                figure :指定网格将被放置的Figure对象

                left/bottom/right/top :网格四边所对应的图形长宽比例

                wspace/hspace :周边留空大小

                width_ratios/height_ratios :各行/列的大小比例)

              

    3、色彩设置 

    # 调用色板,直接使用英文
    seaborn.scatterplot(ccss.s3,ccss.index1b,hue=ccss.s2,palette=["red",'blue'])
    # 调用色板,使用RGB代码
    seaborn.scatterplot(ccss.s3,ccss.index1b,hue=ccss.s2,palette=[(1,0,0),(0,1,1)])
    # 调用色板,使用HTML代码
    seaborn.scatterplot(ccss.s3,ccss.index1b,hue=ccss.s2,palette=["#ff0000",'#0000ff'])
    # 分类色板 ,查看当前的色板
    seaborn.palplot(seaborn.color_palette())
    # 调节亮度、s调节饱和度
    seaborn.palplot(seaborn.hls_palette(10,l=.8,s=.4))

          参数说明:seaborn.color palette(

              palette -None :希望使用的色板名称或者色彩序列, None时返回当前色板None, string, or sequence

              n_colors : int, 色板中需要使用的颜色数量

              desat : float,色彩饱和度)  

           

            

    4、样式设置

          seaborn.set(context='poster',style='white',palette='dark')

          参数说明:seaborn.set(

            context = 'notebook', 设定plotting-context ()的有关参数

              paper :纸质出版物常用大小

              notebook :电脑屏幕常用大小,默认值

              talk:公众演讲时常用大小

              poster :展板常用大小

            style ='darkgrid' :设定预设的主题,即axes-style ()的有关参数

            palette = 'deep' : 即color-palette ()的有关参数

            font ='sans-serif' :设定希望使用的字体

            fontscale =1 :设定对字体的附加放大倍数

            color_codes = True :为True时,使用seaborn的调色板字符设定

            

    5、坐标轴设置  

    # 设置边框
    plt.plot([1,2,3,4])
    # 设置边框颜色
    plt.gca().spines['left'].set_color('w')
    # 设置边框线宽
    plt.gca().spines['right'].set_lw(2)
    # 设置线型
    plt.gca().spines['bottom'].set_ls('--')
    # 设置坐标轴标签,x轴 family:字体,weight:字体形式,size:字体大小
    plt.xlabel('$label$',fontdict={'family':'serif',
               'color':'red','weight':'normal','size':16})
    plt.ylabel('$label$',fontdict={'family':'serif',
               'color':'red','weight':'normal','size':16})
    plt.show()

            

    # x、y轴的刻度范围
    plt.xlim(0,10)
    plt.ylim(0,10)

             

    # 设置旋转方向为垂直的
    plt.xticks(rotation='vertical')
    # 在刻度尺上标上字符
    plt.yticks([-2,-3,5],['$really bad$','$bad$','$n alpha $'], color='g')

            

    # 设置刻度的位置,top,bottom,both,default,none
    plt.gca().xaxis.set_ticks_position('top')
    plt.gca().yaxis.set_ticks_position('both')

            

    # 移动坐标轴位置
    ax =plt.gca()
    # x轴在0.5的位置
    ax.spines['bottom'].set_position(('data',0.5))
    ax.spines['left'].set_position(('data',0.5))
    # 把左右设置为空白不显示
    ax.spines['right'].set_color ('None')
    ax.spines['top'].set_color  ('None')

            

           移除外框:seaborn.despine()

            参数说明:seaborn.despine(

              fig = None,

              ax = None,

              top = True, right = True, left = False, bottom = False是否移 对应位置的spine (框架线)

              offset = None : int or dict,希望将框线移动的绝对距离 -10 or {'left':-10}

              trim = False :是否将框线限制在数轴的最大和最小值范围之内)

    6、文字设置 

    # 使用注解
    import numpy as np
    x = np.linspace(-3,3,50)
    y = 2*x+1
    plt.figure(num=1,figsize=(8,5))
    plt.plot(x,y)
    ax = plt.gca()
    seaborn.despine()
    ax.spines['bottom'].set_position(('data',0))
    ax.spines['left'].set_position(('data',0))
    # 绘制垂直线
    plt.plot([1,1],[0,3],'k--',linewidth=2.5)
    # 绘制一个点
    plt.scatter([1],[3],s=50,color = 'b')
    plt.annotate('$2x+1=3$',xy=(1,3),xycoords='data',xytext=(+30,-10),textcoords='offset points',fontsize =16)
    plt.show()

         参数说明:matplotlib.pyplot.annotate(

              text:注解字符串。

              xy:注解所对应的坐标点位置,

              (x, y)格式。xytext :注解文字的起始点坐标位置,缺省时使用xy的值。

              xycoords : xy坐标位置的起始坐标基准。

                'figure points'/'figure pixels' Fig左下角起按points/pixelsi算。

                'figure fraction' Figure左下角起按百分比计算。

                'axes points'/'axes pixelstAxes左下角起按points/pixelsi算。

                'axes fractiont'Axes左下角起按百分比计算。

                'data' default,使用数据绘图时所用的坐标系。

                'polar'(theta,r),极坐标格式。

              textcoords : xytext坐标位置的起始坐标基准,缺省时使用xy的值。'offset points'/'offset pixelst基于xy值偏离points/pixels

              arrowprops : dict,从xytext指向xy位置的箭头格式。不使用'arrowstyle'关键字时的设定方式:

                width 箭头身体宽度, points

                headwidth 箭头头部宽度, points

                headlength 头部长度,

                pointsshrink 箭头两端"回缩"的长度比例

            annotation_clip :为True时,只有当坐标位于Axes内时才绘制注解。

             

    # 添加文字,rotation旋转30度
    plt.text(0.6,0.5,'$The tag 1$',size= 50,rotation =30,ha ='center',va ='center',bbox =dict(boxstyle= 'round',ec =(1,0.5,0.5),fc =(1,0.8,0.8)))

            

    7、图例设置 

    # seborn,显示完整的图例legend="full"
    seaborn.lineplot("s4","index1",data=ccss,size="Qs9",legend="full")
    plt.show()

          参数说明:matplotlib.pyplot.legend(

              handles :需要设置图例标签的图形元素列表

              labels :相应图形元素的图例标签文字列表

              loc = 'upper right' :图例的显示位置, int/string

                'best' 0;'upper right' 1;'upper left' 2;'lower left' 3;'lower right' 4;'right' 5;'center left' 6;'center right'7;'lower center'8;'upper center'9;'center' 10

            也可以按照2-tuple格式直接指定从左下角起的(x, y)坐标值

              legend () #显示图例

              legend (labels) #按默认元素顺序设定标签并显示图例

              legend (handles, labels) #设定指定元素的标签并显示图例

              

    8、双轴设置

    # 用pandas实现
    ccss.plot.kde(y="index1",secondary_y=True)
    # 设置第二y轴
    ax2 = plt.gca().twinx()
    seaborn.kdeplot(ccss.s3,legend=None,ax=ax2)
    ax2.set_ylabel('$s2$')

              

    9、行列面板设置

         seaborn.catplot(x="time",y='index1',col='s0',data=ccss,kind='boxen')

          参数说明:seaborn.catplot(

              #0.9.0版之前为factorplot

              x, y, hue : names of variables in data 

              data: DataFrame1

            面板相关设定:

              row, col:行/列面板对象名称

              col_wrap:在指定的宽度折叠列面板至下一行,从而成为多行显示

              row_order, col_order :行/列面板变量各类别的显示顺序

              legend = True: bool, optional

              legend_out = True :将图例绘制在设定的图形区域外

              share{x,y} :是否共用行/列

              kind :可以绘制的图形种类"point", "bar", "strip", "swarm", "box", "violin", or "boxen"

            其余设定:

              estimator :希望在每个类别中计算的统计量

              ci: float or "sd" or None,希望绘制的可信区间宽度

              n_boot :计算cI时的bootstrap抽样次数

              units :用于确定抽样单元大小的变量

              order, hue order: lists of strings, optional 

              size : scalar, optionalaspect: scalar, optional

              orient: "y" 1 "h", optional

              color: matplotlib color, optional

              

    10、图形颜色填充

    plt.fill_between([1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [1, 3, 1, 3, 1], color='r')
    fill = plt.fill([3, 1, 3, 1, 3], [1, 2, 3, 4, 5])
    # 关掉所有的轴
    plt.axis('off')

            参数说明:matplotlib.pyplot.fill_between(

                x :曲线的x坐标, array (length N)

                y1:第一条曲线的y坐标, array (length N)

                y2=0:第二条曲线的y坐标, array (length N)

                where = None :绘制时是否包括所对应的区域, array of bool (length N)

                interpolate = False :当使用where参数并且两曲线有交叉时有效当两条曲线比较接近时,要求计算精确的交叉位置并加以绘制

                step :当各x的数值之间y应当是常数时,确定具体的常数取值方式

                "pre": y值恒等于左侧的上一个x, y数据对应的y值

                "post": y值恒等于右侧的下一个x, y数据对应的y值

                "mid":取两侧y值的平均)

              

  • 相关阅读:
    JS数组分页
    UI框架
    mongodb
    koa2 router中间件的三种写法
    Float浮点数转二进制串和十六进制串
    Iterator和for...of循环
    mysql相关故障
    lsof
    iostat测试磁盘性能
    dd测试磁盘
  • 原文地址:https://www.cnblogs.com/wu-wu/p/14253842.html
Copyright © 2011-2022 走看看