• matplotlib教程二



    matlabplid的教程一 传送门

    一. 条形图

    1.1 简介

    条形图是一种图表或图形,它显示带有矩形条的分类数据,其高度或长度与它们所代表的值成比例。条形图显示了离散类别之间的比较,图表的一个轴显示特定类别,另一个轴表示测量值

    1.2 垂直条形图

    ax.bar(x,height,width=0.8,bottom=None,*,align='center',data=None,**kawargs)

    参数说明
    x表示条形的x坐标的标量序列。如果x是条形中心(默认)或左边缘,则对齐控件
    height标量或标量序列表示条形的高度
    width标量或类似数组,可选,条形的宽度默认为0.8
    bottom标量或类似数组,可选,条形的y坐标默认为None
    align{‘center’,‘edge’},可选 ,默认为center
    color条形颜色,可以是字符串也可以是列表

    垂直基本条形图

    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    fig=plt.figure()
    ax=fig.add_axes([0,0,1,1])
    langs=["c","c++","python","Java","PHP"]
    nums=[22,45,65,33,42]
    ax.bar(langs,nums,0.5,10,align='center',color='red')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    垂直组合条形图

    当比较多个数量值时,可能需要一个条形图,其中一个颜色的条形图用于一个数量值

    import numpy as np
    import matplotlib.pyplot as plt
    fig=plt.figure()
    ax=fig.add_axes([0,0,1,1])
    x=np.arange(4)
    data=[[30,25,50,20],
        [40,23,51,17],
        [35,22,48,19]]
    ax.bar(x,data[0],color='r',width=0.25)
    ax.bar(x+0.25,data[1],color='b',width=0.25) #让x轴平移,不然会发生覆盖
    ax.bar(x+0.5,data[1],color='g',width=0.25) #让x轴平移,不然会发生覆盖
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述
    垂直堆叠条形图
    堆积条形图堆叠表示彼此顶部的不同组的条形图,结果为条形图的高度显示组的组合结果。Pylot.bar()函数的可选bottom参数指定条的起始值。它不是从零运行到一个值,而是从底部到值。第一次调用pylot.bar()绘制蓝条。第二次调用pylot.bar()绘制红色条形图,蓝色条形图的底部位于红色条形图的顶部。

    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    fig=plt.figure()
    ax=fig.add_axes([0,0,1,1])
    N=5
    ind=np.arange(1,N+1)
    menNum=(20,35,30,35,27)
    womenNum=(25,32,34,20,25)
    
    ax.bar(ind,menNum,color='r')
    ax.bar(ind,womenNum,bottom=menNum,color='b')
    ax.set_ylabel('peopleNum')
    ax.set_title('The number of men and women in the class')
    ax.set_xticks(ind)
    ax.set_xticklabels(['G1','G2','G3',"G4",'G5'])
    ax.set_yticks(np.arange(0,81,10))
    ax.legend(labels=['men','women'])
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    1.3 水平条形图

    ax.barh(y,width,height=0.8,left=None,*,align='center',**kwargs)

    参数说明
    y表示条形的y坐标的序列,如果y是条形中心(默认)或左缘,则对齐
    width标量或标量序列表示的条的宽度
    height标量或类似数组,可选
    bottom标量或类似数组,可选
    alith{‘center’,‘edge’},可选,默认’center’
    color条形颜色,可以是字符串也可以是列表
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    fig=plt.figure()
    ax=fig.add_axes([0,0,1,1])
    langs=["c","c++","python","Java","PHP"]
    nums=[22,45,65,33,42]
    ax.barh(langs,nums,0.5,10,align='center',color='red')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    其它水平组合和堆叠条形图使用方法和垂直条形图的使用方法是一样的,这里就不展开介绍了

    二. 直方图

    2.1 简介

    直方图是数值数据分布的精确表示。它是连续变量的概率分布的估计,它是一种条形图

    2.2 API

    ax.hist(x,bins=None,density=None,range=None,weights=None,cumulative=False,bottom=None,histtype='bar',align='mid',orientation='vertial',rwidth=None,log=False,color=Nnoe,label=None,stacked=False,normed=None,*,data=None,**kwargs,)

    参数说明
    x数组或者是数组序列
    bins整数或序列或auto,可选项,通常指定为变量的连续,非重叠区间
    rangebins的下部和上部范围
    density如果为true则返回元组的第一个元素将是规范化以形成概率密度的计数
    cumulative如果为True,则计算直方图,其中每个bin给出该bin中的计数加前面所有bin的值
    histtype要绘制的直方图的类型,默认为bar
    normed如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为False
    orientation通过设置orientation为 horizontal创建水平直方图,默认你为垂直

    2.3 直方图绘制

    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    fig=plt.figure()
    ax=fig.add_axes([0,0,1,1])
    a=np.array([22,87,5,43,56,74,55,54,11,20,51,5,79,31,27])
    ax.hist(a,bins=[0,25,50,75,100])#bin用来表示区间,例如[0,25]然后直方图表示的就是落在这个区间数据的数量
    ax.set_title("Result histogram")
    ax.set_xticks([0,25,50,75,100])
    ax.set_xlabel('score')
    ax.set_ylabel('The number of students')
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    三. 饼图

    3.1 简介

    饼图只能显示一系列数据,饼图在一个数据系列中显示项目的大小(称为楔形),与项目的总和成比例,饼图中的数据点显示为整个饼图的百分比

    3.2 API

    ax.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radiuis=None,counterclock=True,wedgeprops=None,textpros=None,center=(0,0),frame=False,rotatelabels=False,*,)

    参数说明
    x数组式,楔形大小
    explode设置每一块顶点距圆形的长度(比例值,会使得楔形从圆形中拉出来)
    labels列表。一系列字符串,为每个楔形提供标签
    colors一系列matplotlib颜色参数,饼图将通过它循环。如果为None,将使用当前活动周期中的颜色
    autopctString用于用数值标记楔形。标签将放在楔子内。格式字符串将为fmt%pct
    pctdistance设置比例值文字距离圆心的距离
    shadow布尔值,设置是否绘制阴影
    startangle设置选择旋转度

    3.3 饼图绘制

    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    fig=plt.figure(figsize=(10,5))
    ax=fig.add_axes([0,0,1,1])
    ax.axis('equal') #如果不设置equal由于x轴和y轴的比例不同,导致绘制出是一个椭圆
    langs0=['c','c++','java','Python','PHP']
    students=[23,17,35,29,12]
    
    ax.pie(students,labels=langs,autopct="%.2f%%",colors=['red','yellow','blue','green','pink'],explode=[0.1,0,0,0,0],
          shadow=True) #表示保留2位小数
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    四. 散点图

    4.1 简介

    散点图用于绘制水平轴和垂直轴上的数据点,以试图显示一个变量受另一个变量 影响的程度。数据表中的每一行都由一个标记表示,该位置取决于其在X和Y轴上设置的列中的值,可以将第三个变量设置为对应标记的颜色或大小,从而为该图添加另一个维度。

    4.2 API

    ax.scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,edgecolors=None,*,plotnonfinite=False,data=None,**kwargs,)

    4.3 散点图绘制

    fig=plt.figure(figsize=(10,5))
    ax=fig.add_axes([0,0,1,1])
    
    girls_grades=[89,90,70,89,100,80,90,100,80,34]
    boys_grades=[30,29,49,48,100,48,38,45,20,30]
    grades_range=[10,20,30,40,50,60,70,80,90,100]
    ax.scatter(grades_range,girls_grades,color='r',alpha=1)
    ax.scatter(grades_range,boys_grades,color='b',alpha=1)
    ax.set_title("examples of scatter plots")
    ax.set_xlabel("scores range")
    ax.set_ylabel("scores")
    ax.legend(labels=['girls','boys'])
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    五. 箱形图

    5.1 简介

    箱型图也称为须状图,显示包含最小值,第一四分位数,中位数,第三四分位数和最大值的一组数据的摘要。

    在这里插入图片描述
    在箱形图中间的方块,绘制的从第一个四分位数到第三个四分位数的方框。垂直线穿过方框,须状从每个四分位数到最小值和最大值

    5.2 API

    ax.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,patch_artist=None,bootstrap=None,usermedians=None,conf_intervals=None,meanline=None,showmeans=None,showcaps=None,showbox=None,showfliers=None,boxpros=None,labels=None,flierprops=None,medianprops=None,capprops=None,whiskerprops=None,manage_ticks=True,autorange=False,zorder=None,*,data=None)

    和其它API一样,虽然参数多但基本上用不到

    5.3 绘制箱状图

    fig=plt.figure(figsize=(10,5))
    ax=fig.add_axes([0,0,1,1])
    np.random.seed(10)  #传入随机数种子
    collectn_1=np.random.normal(100,10,200)  #生成正态分布情况的数据(均值,标准差,个数)
    collectn_2=np.random.normal(80,30,200)
    collectn_3=np.random.normal(70,25,200)
    collectn_4=np.random.normal(70,25,200)
    
    ax.boxplot([collectn_1,collectn_2,collectn_3,collectn_4])
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    六. 轮廓图

    6.1 简介

    轮廓图(有时也称为水平图)是一种在二维平面上绘制三维表面的方法,它绘制了y轴上的两个预测变量X,Y的轮廓的响应变量。这些轮廓有时称为z切片或等响应值。如果要查看Z如果随两个输入X和Y的变化而变化,则轮廓图是非常适用的,例如Z=F(X,Y)。两个变量函数或等值线是函数具有常数值的曲线。自变量x和y通常限于称为meshgrid的规则网络。使用numpy.meshgrid使用x值数组和y值数组创建一个矩形网络。

    6.2 轮廓图绘制

    fig=plt.figure(figsize=(10,5))
    ax=fig.add_axes([0,0,1,1])
    x=np.linspace(-3,3,100)
    y=np.linspace(-3,3,100)
    X,Y=np.meshgrid(x,y)#生成矩形网格
    z=np.sqrt(X**2+Y**2)
    ct=ax.contourf(x,y,z)  #绘制三维图像的切面图
    fig.colorbar(ct)#颜色导航
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    七. 图像内的文字、注释和箭头

    7.1 Api介绍

    Pyplot函数描述
    text()在Axes对象的任意位置添加文字
    xlabel()给x轴添加标签
    ylabel()个Y轴添加标签
    title()给Axes对象添加标题
    legend()为Axes对象创建图例
    suptitle()为Figure对象添加中心化标题
    figtext()在FIgure对象的任意位置添加文字
    annotate()为Axes对象添加注释(箭头可选)

    7.2 Api使用

    1. text(),xlabel(),ylabel(),title(),legend()
      可以将任何matplotlib文本字符串中的子集TeXmarkup放在一对美元符号($)中
    fig=plt.figure()
    ax=fig.add_axes([0,0,1,1])
    t=np.arange(0.0,2.0,0.01)
    s=np.sin(2*np.pi*t)
    ax.plot(t,s)
    ax.set_title(r"$\sin x_i$",fontsize=20)  #$$中写的就是公式,使用的是markdown的语法
    ax.text(0.6,0.3,r'sunck is a good man',fontsize=20,bbox={'facecolor':'red'}) #位置是(0.6,0.3)单位为英寸
    ax.set_xlabel("time(s)")
    ax.set_ylabel("vo;ts(mv)")
    ax.legend(labels=("k"),loc="right")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    2. subtitle(),figtext()

    import math
    fig=plt.figure(figsize=(12,6))
    x=np.arange(0,math.pi*2,0.05)
    y1=np.sin(x)
    y2=np.cos(x)
    ax1=plt.subplot(121)
    ax1.plot(x,y1)
    ax2=plt.subplot(122)
    ax2.plot(x,y2,color='r')
    plt.suptitle("sin&cos") #画纸的主标题
    plt.figtext(0.3,0.8,s="sin(0)=0") #在figure对象的指定位置加入指定的文字 
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述
    3. annotate()

    参数说明
    xy设置箭头所指的坐标位置
    xytext设置注释文字的位置
    arrowprops以字典的形式设置箭头的样式
    箭头的样式属性说明
    width设置箭头长方形部分的宽度
    headlength设置箭头尖端的长度
    headwidth设置箭头尖端底部的宽度
    facecolor设置箭头的颜色
    shrink设置箭头的顶点、尾部与指示点和注释文字之间的距离(比例值)
    fig=plt.figure()
    ax=fig.add_axes([0,0,1,1])
    t=np.arange(0.0,2.0,0.01)
    s=np.sin(2*np.pi*t)
    ax.plot(t,s)
    ax.set_title(r"$\sin x_i$",fontsize=20)  #$$中写的就是公式,使用的是markdown的语法
    ax.set_xlabel("time(s)")
    ax.set_ylabel("vo;ts(mv)")
    ax.legend(labels=("k"),loc="right")
    ax.annotate("sunck",xy=(1.5,0.8),xytext=(1,0.4),arrowprops=dict(facecolor='red',shrink=(0.005)))
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    箭头使用汇总

    fig=plt.figure(figsize=(12,9))
    ax=fig.add_axes([0,0,1,1])
    arrstyles=['-','->','-[','<-','fancy','simple','wedge']
    for i, style in enumerate(arrstyles):
        ax.annotate(style,xy=(0.2,0.9-0.1*i),xytext=(0.05,0.85-0.1*i),arrowprops=dict(arrowstyle=style)) #箭头的样式
    connstyles=['arc','arc,angleA=10,armA=30,rad=30','arc3,rad=.2','arc3,rad=-.2','angle','angle3']
    for i ,style in enumerate(connstyles):
        ax.annotate(style,xy=(0.7,0.9-0.1*i),xytext=(0.6,0.85-0.1*i),arrowprops=dict(arrowstyle="->",connectionstyle=style))#箭头的形状
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

  • 相关阅读:
    【前端学java】Java中的异常处理(15)完结
    计算机组成原理_笔记_第6章:总线
    Vulkan入门——编译Shaderc
    ArcGIS 高级制图技巧:1、制图表达轮廓线
    Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value;解决办法
    项目分析(从技术到项目、产品)
    Linux内核有什么之内存管理子系统有什么第一回 —— 引言
    线程池与CompletableFuture
    如何给注册中心锦上添花?
    【C++】template方法undefined reference to(二):C++代码的编译过程
  • 原文地址:https://blog.csdn.net/qq_43456605/article/details/127913880