抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

从0开始学习Matplotlib与Seaborn

Matplotlib学习笔记

由基础绘图开始学起

涉及中文标签时需设定中文字体以正常显示中文标签,如下

#配置中文字体,一般为SimHei或微软雅黑Microsoft YaHei即可正常显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']

图表参数

图表绘制

1.IPython魔法命令

  • %matplotlib inline,可以在notebook中显示绘制的图表

2.plt.subplots()命令创建一个Figure和Axes,figure是绘制窗口,axes是绘图坐标系

  • Figure:顶层级,所有图表的容器,可容纳多个Axes
  • Axes:坐标系,对应我们画的每一个图表,在Axes中可以对图表的Axis和Tick做操作

3.条形图bar翻转轴后,参数width自动变成height

  1. plt.plot()折线图参数
  • linewidth:配置线宽
  • linestyle:配置线型
    • linestyle线型参数详情:
    • linestyle 简写
      ‘solid’(default) ‘-‘
      ‘dotted’ ‘:’
      ‘dashed’ ‘–’
      ‘dashdot’ ‘-.’
      ‘None’ ‘’或’ ‘
  • marker:折线图折点配置
  • markersize:折点大小配置
  1. 面积图:stackplot()
  • 面积图实际为折线图的另类显示,相当于对折线图进行区域颜色填充
  1. pie()饼图参数
  • autopct:设置数值格式
  • explode:将某部分分离强调,int
  • labeldistance:配置轴标签显示位置,int
  • pctdistance:配置数值标签显示位置,int
  • wedgeprops:配置环形图,包含’width’,’linewidth’,’edgecolor’三个参数,width为配置环形图宽度,linewidth为配置边缘线宽度,edgecolor为配置边缘线颜色为str格式
  1. scatter()散点图/气泡图参数
  • x,y:x/y 轴对应的数据
  • s:散点面积,为标量或者等长的数组,
  • c:散点颜色,为指定的色彩、数值序列或者颜色序列
  • marker:配置标记点形状,默认为圆圈
  • cmap:仅当c参数为颜色序列的时候使用
  • aplha:透明图设置,在显示多个变量的场景下为了能够显示堆叠的散点,可以设置该参数。取值范围[0,1]
  • norm:仅当c为数值序列的时候,通过colors.Normalize将值进行正则化
  • linewidths:散点标记的边界的宽度。
  • edgecolors:散点标记的边界的颜色。
  1. plt.figure(figsize=(x,y))意为创建长x英寸,宽y英寸的画布

图内配置

  1. 双轴
  • plt.twinx()添加次坐标轴
  • twinx()或twiny()生成共享x轴或y轴的新的axes,若通过plt.subplots()生成ax后,再绘制折线图时,需在这个新生成的ax上绘制
  1. 添加阴影
  • 先import matplotlib.patheffects as path_effects
  • 在绘图代码中添加参数:path_effects=[]
  1. plt.annotate()添加标记
  • xy,需要传入的数组,如xy=(1,2),用于定位标记位置
  • xycoords,设置xy是通过何种方式去定位,如xycoords=’data’表示使用坐标轴刻度去进行定位
  • xytext,提示文本需要展示的位置
  • textcoords,同xycoords,设置xytext通过何种方式定位
    • xycoords,textcoords参数:
    • 参数值 含义
      figure points 以画布左下为参考,单位为点数
      figure pixels 同上,单位为像素数
      figure fraction 同上,单位为百分比
      axes points 以子图为参考,单位为点数,默认为1个
      axes pixels 同上,单位为像素
      axes fraction 同上,单位为百分比
      data 默认值,以坐标点为参考
      polar 使用极坐标系
  • arrowprops,箭头的样式配置
    • arrowprops参数:
      参数值 含义
      width 宽度
      frac 箭头占整个长度的百分比
      headwidth 箭头头部宽度
      shrink 箭头两端收缩百分比
      **kwargs 任何matplotlib.patches.FancyArrowPatch的关键字
  1. Matplotlib中的很多内置配色方法,可以通过matplotlib.cm.get_camp使用

全局配置

  1. 中文字体中可配置Simsun(宋体),SimHei(黑体),Kaiti(楷体)及Microsoft YaHei(微软雅黑)

  2. plt.title()设置标题参数

  • fontdict = {},可配置family,size,color
  • loc,设置标题位置,如center,left,right
  1. plt.xlabel(),x.ylabel()设置x轴y轴标题参数
  • fontdict = {}
  • labelpad,轴与轴标题间距
  1. plt.legend()添加图例参数
  • loc,可选参数’best’,表示自动选择最优位置
  • fontsize,字体大小
  1. plt.text()显示数据标签
  • 三个重要参数:
    • x,确定x轴位置
    • y,确定y轴位置
    • s,需显示的文本
    • 即通过xy确定位置显示s
  • va与ha,设置文本显示位置
  • fontdict = {}
  1. plt.grid()添加网格线
  • b,b = True时显示网格线
  • axis,’y’,’x’,’both’,分别为展示横网格线,纵网格线以及都显示
  • linestyle
  • linewidth
  • color
  1. plt.xlim(),plt.ylim()坐标轴范围:

    参数即为范围,如:

    plt.ylim(50,300) #意为y轴坐标轴范围为50-300
    
  2. 图表主题

  • plt.style.use()设置风格
  • 可以通过print(plt.style.available)显示所有风格

多图组合图

  1. plt.subplot(2,2,1)指将整块画布划分为2*2块区域,并置顶第一块作图
  • 另一种组合作图方式:
    fig,axs = plt.subplot(2,2)
    axs[0][0].bar(...)
    axs[1][0].plot(...)
    
  • 不等大小多图组合
    • add_subplot():添加至subplot区域
    • add_gridspec():将整个画布划分为不均匀区域,如
      spec = fig.add_gridspec(nrows=2,ncols=2,width_ratios=[1,3],height_ratio=[1,2])
      #表示将整个画布划分为2*2,width_ratios=[1,3]意为将两列宽度按1:3裁剪,同理可得height_ratios
      
      • spec支持切片,如,将第二行展示为整个图
        ax = fig.add_subplot(spec[1,:])
        
  • 子图同样可以通过set_title,set_xlabel等设置子图标题轴标题等
    • 添加大标题需通过fig.suptitle()实现

Seaborn学习笔记

Seaborn基础

  1. 由于Seaborn是基于matplotlib的可视化图形库,因此在notebook中使用Seaborn前也需运行魔法命令

    %matplotlib inline

  2. sns.load_dataset()其实就是一个Pandas.DataFrame

  3. Seaborn中提供的图表包含两个层级–figure-level和axes-level,axes-level的图表只会在一个单独的matplotlib.pyplot.Axes进行图表的绘制,而figure-level是基于Seaborn的对象,也就是axes-level的Seaborn图表再结合matplotlib的接口开发实现的

  • Seaborn图表层级如下:

开始绘图

  1. 依据个人理解进行Seaborn可视化的系统性整理
    • Seaborn几乎所有的绘制函数都有以下的几个参数
      • 参数 含义
        kind 配置绘制图形的种类,str,如line/scatter/boxen等
        hue 根据字段配置以区分颜色,str,选取data中的某一字段
        size 根据字段配置以区分数值大小,str,选取data中的某一字段
        style 根据字段配置以区分点样式,str,选取data中的某一字段
    • 在开始绘图前,将Seaborn图表类型分为四部分
      • 数值相关型

        相关性分析的图表通常会使用figure-level层级的relplot(),也可以使用axes-level的scatterplot(),lineplot()进行绘制

        • 在折线图中,对于复杂的数据(往往会出现一个x对应多个y),seaborn会自动绘制置信区间(默认为95%),计算置信区间可能非常耗时,可以通过ci=None来去掉
      • 数据分布型

        分布型图表通常使用figure-level层级的displot(),在不设定kind参数时默认显示histplot()直方图,axes-level层级包含有:histplot()直方图,kedplot()核密度分布图,ecdfplot()累积概率密度图,除此之外还有rugplot(),与前三者不同的是rugplot()可以添加至以上任意图表

        • displot(kind=’hist’),histplot()直方图
          • displot(kind=’hist’),histplot()的条件数据区间划分:
            • binwidth,通过此参数设置bin的宽度
            • bins,通过此参数设置包含bin的个数
          • seaborn中默认不同的直方图是重叠显示的,如需数据堆叠可以设置nultiple参数
            • nultiple = ‘stack’,意为堆叠显示直方图
        • displot(kind=’kde’),kdeplot()
          • 核密度图设置平滑程度(在y参数未赋值前是折线图):
            • bw_adjust,调节图表平滑程度
          • 热力核密度图:
            • fill = True,bool
        • 在displot()中赋值x,y后,默认显示热力图(?)
          • 热力图添加色块:
            • cbar = True,bool
      • 分类数据对比

        通常使用catplot()进行绘制

        • 在分类型数据中,按官方文档分为三个类型:
          • 点类型

            点类型的图可以通过jitter参数(bool)调整避免重叠,jitter = False时,点重叠
            点类型的图表可以通过order=[]修改x轴顺序,seaborn默认x轴顺序即dataframe中的出现顺序

            1. stripplot()
            2. swarmplot()
              • swarmplot()自动将点分开,但当数据量足够大时计算开销会非常大
          • 分布类型

            其中,violinplot()与boxenplot()可以视为箱型图的加强版,小提琴图与箱型图的区别可以理解为直方分布图与核密度图的区别

            1. boxplot()
            2. violinplot()
            3. boxenplot()
          • 预估类型

            预估类型的图会在展示数据分布外,对各个类别的数据进行一个预估

            1. pointplot()
            2. barplot()
            3. countplot()
      • 回归模型

        seaborn主要由regplot()和lmplot()进行回归分析,其中lmplot会依赖数据x和y自动绘制出散点,线性回归模型以及95%的置信区间

        • 存在高阶关系的情况下,我们可以通过参数order来进行多项式的最高次幂
        • 如果数据集中存在离群点,可以通过参数robust=True来选用稳健回归模型进行绘制,默认是使用的最小二乘回归会对异常值比较敏感

评论