• Matplotlib绘图添加标题,图例,网格,参考线,注释文本,数学表达式,标签,修改刻度



    Matplotlib绘图添加标题,图例,网格,参考线,注释文本,数学表达式,标签,修改刻度

    matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图 http://t.csdn.cn/ZeXim

    matplotlib的参数配置:http://t.csdn.cn/TiI79

    一.设置x轴和y轴的标签

    xlabel(xlabel,fontdict=None,labelpad=None)
    ylabel(ylabel,fontdict=None,labelpad=None)
    
    • 1
    • 2
    • xlabel/ylabel: 表示x轴(y轴)的标签文本。

    • fontdict:表示控制标签文本样式的字典。

    • labelpad:表示标签与坐标轴边框(包括刻度和刻度标签)的距离。

    示例代码:

    # 标签
    import numpy as np
    import matplotlib.pyplot as plt
    # 支持中文
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    x=np.linspace(-np.pi,np.pi,256,endpoint=True)
    y1,y2=np.sin(x),np.cos(x)
    plt.plot(x,y1,x,y2)
    # 设置标签
    plt.xlabel("this is x 轴",size=20)
    plt.ylabel("this is y 轴",size=20)
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    image-20221001205035213

    二.设置刻度范围

    使用xlim,ylim函数来设置x轴和y轴的范围

    xlim(left=None,right=None,emit=True,auto=False,xmin=None,xmax=None)
    ylim(left=None,right=None,emit=True,auto=False,ymin=None,ymax=None)
    
    • 1
    • 2
    • 使用xmin(ymin)和xmax(ymax)来设置
    # 标签
    import numpy as np
    import matplotlib.pyplot as plt
    # 支持中文
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    x=np.linspace(-np.pi,np.pi,256,endpoint=True)
    y1,y2=np.sin(x),np.cos(x)
    plt.plot(x,y1,x,y2)
    # 设置标签
    plt.xlabel("this is x 轴",size=20)
    plt.ylabel("this is y 轴",size=20)
    # 刻度标签
    plt.xlim(-4,4)
    plt.ylim(-1,1)
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    image-20221001205614877

    三.添加标题和图例

    标题

    title(label,fontdict=None,loc="center",pad=None)
    
    • 1

    主要是这里这个loc

    • loc:表示标题的对齐样式,包括left,right,center
    • pad:表示标题与图表顶部的距离,默认为None

    图例

    legend(handles,labels,loc)
    
    • 1
    • loc:图例的位置这里可以选择uper right,upper left,lowerleft,lowright …建议选择loc=‘best’
    # 标签
    import numpy as np
    import matplotlib.pyplot as plt
    # 支持中文
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    x=np.linspace(-np.pi,np.pi,256,endpoint=True)
    y1,y2=np.sin(x),np.cos(x)
    pic=plt.plot(x,y1,x,y2)
    # 设置标签
    plt.xlabel("this is x 轴",size=20)
    plt.ylabel("this is y 轴",size=20)
    # 刻度标签
    plt.xlim(-4,4)
    plt.ylim(-1,1)
    # 添加标题
    plt.title("正弦曲线和余弦曲线",loc="left")
    # 添加图例
    plt.legend(pic,["sinx","cosx"],shadow=True,fancybox="blue")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    image-20221001210854598

    四.显示网格

    这个简单,plt.grid()就好了,但是里面还有一些参数

    grid(b=True,axis="both",which='major')
    
    • 1
    • which:显示网格的类型,支持major,minor,both默认是major

    • axis:表示显示哪个方向的网格,有x,y,both三个选项

    • linewidth或lw:线条的宽度

      默认

    # 标签
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 支持中文
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
    y1, y2 = np.sin(x), np.cos(x)
    pic = plt.plot(x, y1, x, y2)
    # 设置标签
    plt.xlabel("this is x 轴", size=20)
    plt.ylabel("this is y 轴", size=20)
    # 添加标题
    plt.title("正弦曲线和余弦曲线", loc="left")
    # 添加图例
    plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
    # 网格
    plt.grid()
    plt.show()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    image-20221001211112120

    选择添加y轴的网格,修改lw为0.3

    plt.grid(lw=1, axis="y")
    
    • 1

    image-20221001211644221

    五.添加水平参考线和参考区域

    1.使用axhline添加水平参考线

    axhline(y=0,xmin=0,xmax-1,linestyle="-")
    
    • 1
    • y:表示水平参考线的坐标

    • xmin:表示水平参考线的起始位置,默认为0

    • xmax:水平参考线的终止位置,默认为1

    • linstyle:表示水平参考线的类型,默认是实线

      linstyle的其他类型:http://t.csdn.cn/Ufbvt

    image-20221001212112835

    2.使用axvline绘制垂直参考线

    axvline与axhline的语法类似,只需要修改x和y即可

    示例:在上图中添加两条参考线:

    # 标签
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 支持中文
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
    y1, y2 = np.sin(x), np.cos(x)
    pic = plt.plot(x, y1, x, y2)
    # 设置标签
    plt.xlabel("this is x 轴", size=20)
    plt.ylabel("this is y 轴", size=20)
    # 添加标题
    plt.title("正弦曲线和余弦曲线", loc="left")
    # 添加图例
    plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
    # 网格
    plt.grid(lw=1, axis="y")
    # 参考线
    plt.axvline(x=0.5, linestyle=":", color="m")
    plt.axhline(y=0.5, linestyle="--", color="y")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    image-20221001212546052

    3.使用axhspan和axvspan添加参考区域

    axhspan(ymin,ymax,xmin,xmax)
    axvspan(ymin,ymax,xmin,xmax)
    
    • 1
    • 2
    • ymin:表示水平跨度的下限
    • ymax表示水平跨度的上限
    • xmin:表示垂直跨度的下限
    • xmax:表示垂直跨度的上限
    # 标签
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 支持中文
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
    y1, y2 = np.sin(x), np.cos(x)
    pic = plt.plot(x, y1, x, y2)
    # 设置标签
    plt.xlabel("this is x 轴", size=20)
    plt.ylabel("this is y 轴", size=20)
    # 添加标题
    plt.title("正弦曲线和余弦曲线")
    # 添加图例
    plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
    # 网格
    plt.grid(lw=1, axis="y")
    # 参考线
    plt.axvline(x=0.5, linestyle=":", color="m")
    plt.axhline(y=0.5, linestyle="--", color="y")
    # 参考区域
    plt.axvspan(xmin=0.5, xmax=1, alpha=0.32)
    plt.axhspan(ymin=0.2, ymax=0.5, alpha=0.32)
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    image-20221001213116289

    六:添加注释文本

    一.指向性文本

    anootate(s,xy,xytext,xycoords,arrowprops,bbox)
    
    • 1
    • s:表示注释的文本内容
    • xy:表示注释的点的坐标位置,接受元组(x,y)
    • xytext:表示注释文本所在的坐标位置
    • xycoords:表示xy的坐标系统,默认使用与折线使用相同的坐标系统
    • bbox:表示注释文本的边框的属性字典
    • arrowprops:表示知识箭头的属性字典

    arrowprops参数如下:

    image-20221001214629604

    二.无指向性文本注释文本

    text(x,y,s,fontdict=None,bbox)
    
    • 1
    • x,y:表示注释文本的位置。

    • s:表示注释文本的内容。

    • fontdict:表示控制字体的字典。

    • bbox:表示注释文本的边框属性子弹

    例如:

    # 标签
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 支持中文
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
    y1, y2 = np.sin(x), np.cos(x)
    pic = plt.plot(x, y1, x, y2)
    # 设置标签
    plt.xlabel("x 轴", size=20)
    plt.ylabel("y 轴", size=20)
    # 添加标题
    plt.title("正弦曲线和余弦曲线")
    # 添加图例
    plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
    # 网格
    plt.grid()
    plt.annotate("最小值", xy=(-np.pi / 2, -1.0), xytext=((-np.pi / 2), -0.5), arrowprops=dict(arrowstyle="->"))
    plt.text(3.1, 0.1, "y=sin(x)", bbox=dict(alpha=0.2))
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    image-20221001215003576

    七.添加数学公式

    只要使用latetx或者katex语法即可

    比如r"$\sin x$"就会显示为 sin ⁡ x \sin x sinx

    这里修改下标题

        # 标签
        import numpy as np
        import matplotlib.pyplot as plt
    
        # 支持中文
        plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
        plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
        x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
        y1, y2 = np.sin(x), np.cos(x)
        pic = plt.plot(x, y1, x, y2)
        # 设置标签
        plt.xlabel(" x 轴", size=15)
        plt.ylabel(" y 轴", size=15)
        # 添加标题
        plt.title(r'$\frac{\sin x}{2}$')
        # 添加图例
        plt.legend(pic, ["sinx", "cosx"], shadow=True, fancybox="blue")
        # 网格
        plt.grid()
        plt.annotate("最小值", xy=(-np.pi / 2, -1.0), xytext=((-np.pi / 2), -0.5), arrowprops=dict(arrowstyle="->"))
        plt.text(3.1, 0.1, "y=sin(x)", bbox=dict(alpha=0.2))
        plt.show()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    image-20221001220255295

    参考链接:Matplotlib — Visualization with Python
    参考书籍:Python数据可视化%20(黑马程序员)

  • 相关阅读:
    蛋白质结构预测 AlphaFold2、ColabFold、Uni-Fold
    企业媒体信息发布系统,一键发布省时省力
    中高价位搭载率超过60%!NOA几乎标配!APA赛道持续升温
    常见的安全设备详解
    Python编程——for循环基础语法、range语句以及一些案例
    驱动开发,IO多路复用(select,poll,epoll三种实现方式的比较)
    【数字IC/FPGA】热独码检测
    六级高频词汇——Group07
    SAP ERP系统里的那些核心主数据
    Docker的交互式模式,你知道了吗?
  • 原文地址:https://blog.csdn.net/qq_54423921/article/details/127138106