• 【matplotlib】1-使用函数绘制图表


    使用函数绘制图表

    1.绘制matplotlib图表组成元素的主要函数

    在一个图形输出窗口中,底层是一个Figure实例,通常称之为画布,包含一些可见和不可见的元素。在画布上的就是图形,图形是一些Axes实例,里面几乎包含了matplotlib的组成元素,例如坐标轴、刻度、标签、线和标记等。

    2.准备数据

    我们可以导入第三方包NumPy和快速绘图模块pyplot,matplotlib库就是建立在科学计算包NumPy基础之上的Python绘图库。

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.5, 3.5, 100) # 在0.5到3.5之间均匀地取100个数
    y = np.sin(x)
    y1 = np.random.randn(100) # 在标准正态分布中随机地取100个数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.函数用法

    3.1函数plot()–展现变量的趋势变化

    函数功能: 展现变量的趋势变化
    调用签名: plt.plot(x, y, ls=‘-’, lw=2, label=‘plot figure’)
    参数说明:

    • x: x轴上的数值
    • y: y轴上的数值
    • ls: 折线图的线条风格
    • lw: 折线图的线条宽度
    • label: 标记图形内容的标签文本
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.cos(x)
    
    plt.plot(x, y, ls='-', lw=2, label='cos(x)')
    plt.legend()  # 显示图例
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    plot

    3.2函数scatter()–寻找变量之间的关系

    函数功能: 寻找变量之间的关系
    调用签名: plt.scatter(x, y, c=‘b’, label=‘scatter figure’)
    参数说明:

    • x: x轴上的数值
    • y: y轴上的数值
    • c: 散点图的标记颜色
    • label: 标记图形内容的标签文本
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.random.randn(1000)
    
    plt.scatter(x, y, c='b', label='scatter plot')
    plt.legend()
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    scatter

    3.3函数xlim()–设置x轴的数值显示范围

    函数功能: 设置x轴的数值显示范围
    调用签名: plt.xlim(xmin, xmax)
    参数说明:

    • xmin: x轴上的最小值
    • xmax: x轴上的最大值
    • 平移性: 上面的函数功能,调用签名和参数说明同样可以平移到函数ylim()上
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.random.randn(1000)
    
    plt.scatter(x, y, c='b', label='scatter plot')
    plt.legend()
    
    plt.xlim(0.05, 10)
    plt.ylim(0, 1)
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    scatter

    3.4函数xlabel()–设置x轴的标签文本

    函数功能: 设置x轴的标签文本
    调用签名: plt.xlabel(string)
    参数说明:

    • xmin: 标签文本的内容
    • 平移性: 上面的函数功能,调用签名和参数说明同样可以平移到函数ylabel()上
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.sin(x)
    
    plt.plot(x, y, ls='-', lw=2, c='c', label='sin(x)')
    plt.legend()  # 显示图例
    
    plt.xlabel('x-axis')
    plt.ylabel('y-axis')
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    sin

    3.5 函数grid()–绘制刻度线的网格线

    函数功能: 绘制刻度线的网格线
    调用签名: plt.grid(linestyle=‘:’, color=‘r’)
    参数说明:

    • linestyle: 网格线的线条风格
    • color: 网格线的线条颜色
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 100)
    y = np.log(x)
    
    plt.plot(x, y, ls='-.', lw=2, c='c', label='y=log(x)')
    plt.legend()
    
    plt.grid(linestyle=':', color='r')
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    log

    3.6 函数axhline()–绘制平行与x轴的水平参考线

    函数功能: 绘制平行与x轴的水平参考线
    调用签名: plt.axhline(y=0.0, c=‘r’, ls=‘–’, lw=2)
    参数说明:

    • y: 水平参考线的出发点
    • c: 参考线的线条颜色
    • ls: 参考线的线条风格
    • lw: 参考线的线条宽度
    • 平移性: 上面的函数功能,调用签名和参数说明同样可以平移到函数axvline()上
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 100)
    y = np.sin(x)
    
    plt.plot(x, y, ls='-.', lw=2, c='c', label='sin(x)')
    plt.legend()
    
    plt.axhline(y=0.0, c='r', ls='--', lw=2)
    plt.axvline(x=4.0, c='r', ls='--', lw=2)
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    sin

    3.7 函数axvspan()–绘制垂直于x轴的参考区域

    函数功能: 绘制垂直于x轴的参考区域
    调用签名: plt.axvspan(xmin=1.0, xmax=2.0, facecolor=‘y’, alpha=0.3)
    参数说明:

    • xmin: 参考区域的起始位置
    • xmax: 参考区域的终止位置
    • facecolor: 参考区域的填充颜色
    • alpha: 参考区域的填充颜色的透明度
    • 平移性: 上面的函数功能,调用签名和参数说明同样可以平移到函数axhspan()上
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.sin(x)
    
    plt.plot(x, y, ls='-.', lw=2, c='c', label='sin(x)')
    plt.legend()
    
    plt.axvspan(xmin=4.0, xmax=6.0, facecolor='y', alpha=0.3)
    plt.axhspan(ymin=0.0, ymax=0.5, facecolor='y', alpha=0.3)
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    sin

    3.8 函数annotate()–添加图形内容细节的指向型注释文本

    函数功能: 添加图形内容细节的指向型注释文本
    调用签名: plt.annotate(string,xy=(np.pi/2, 1.0), xytext=((np.pi/2)+0.15, 1.5), weight=‘bold’, color=‘b’, arrowprops=dict(arrowstyle=‘->’, connectionstyle=‘arc3’, color=‘b’))
    参数说明:

    • string: 图形内容的注释文本
    • xy: 被注释的图形内容的位置坐标
    • xytext: 注释文本的位置坐标
    • weight: 注释文本的字体粗细风格
    • color: 注释文本的字体颜色
    • arrowprops: 指示被注释内容的箭头的属性字典
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.sin(x)
    
    plt.plot(x, y, ls='-.', lw=2, c='c', label='sin(x)')
    plt.legend()
    
    plt.annotate("maximum",
                 xy=(np.pi/2, 1.0),
                 xytext=(np.pi/2+1.0, 0.8),
                 weight='bold',
                 color='b',
                 arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='b'))
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    sin

    3.9 函数text()–添加图形内容细节的无指向型注释文本

    函数功能: 添加图形内容细节的无指向型注释文本
    调用签名: plt.text(x, y, string, weigth=‘bold’, color=‘b’)
    参数说明:

    • x: 注释文本内容所在位置的横坐标
    • y: 注释文本内容所在位置的纵坐标
    • string: 注释文本内容
    • weight: 注释文本的字体粗细风格
    • color: 注释文本的字体颜色
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.sin(x)
    
    plt.plot(x, y, ls='-', lw=2, c='c', label='sin(x)')
    plt.legend()  # 显示图例
    
    plt.text(3.10, 0.09, "y=sin(x)", weight="bold", color="b")
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    sin

    3.10 函数title()–添加图形内容的标题

    函数功能: 添加图形内容的标题
    调用签名: plt.title(string)
    参数说明:

    • string: 图形内容的标题文本
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.sin(x)
    
    plt.plot(x, y, ls='-', lw=2, c='c', label='sin(x)')
    plt.legend()  # 显示图例
    
    plt.title('sin(x)')  # 标题
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    sin

    3.11 函数legend()–标识不同图形的文本标签图例

    函数功能: 标识不同图形的文本标签图例
    调用签名: plt.legend(loc=‘lower left’)
    参数说明:

    • loc: 图例在图中的地理位置
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0.05, 10, 1000)
    y = np.sin(x)
    
    plt.plot(x, y, ls='-', lw=2, c='c', label='sin(x)')
    plt.legend(loc='lower left')  # 显示图例
    
    plt.title('sin(x)')  # 标题
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    sin

    函数综合应用

    import matplotlib.pyplot as plt
    import numpy as np
    from matplotlib import cm as cm  # color map
    
    # define data
    x = np.linspace(0.5, 3.5, 100)
    y = np.sin(x)
    y1 = np.random.randn(100)
    
    # scatter figure
    plt.scatter(x, y1, c='0.25', label='scatter figure')
    
    # plot figure
    plt.plot(x, y, ls='--', lw=2, c='r', label='plot figure')
    
    # some clean up (removing chartjunk)
    for spine in plt.gca().spines.keys():
        if spine == "top" or spine == "right":
            plt.gca().spines[spine].set_color('none')
    
    # turn bottom ticks for x-axis on
    plt.gca().xaxis.set_ticks_position('bottom')
    # set tick_line position of bottom
    
    # turn left ticks for y-axis on
    plt.gca().yaxis.set_ticks_position('left')
    # set tick_line position of left
    
    # set x,yaxis limit
    plt.xlim(0.0, 4.0)
    plt.ylim(-3.0, 3.0)
    
    # set axes labels
    plt.xlabel('x_axis')
    plt.ylabel('y_axis')
    
    # set x,yaxis grid
    plt.grid(True, ls=':', color='r')
    
    # add a horizontal line across the axis
    plt.axhline(y=0.0, c='r', ls='--', lw=2)
    
    # add a vertical span across the axis
    plt.axvspan(xmin=1.0, xmax=2.0, facecolor='y', alpha=0.3)
    
    # set annotating info
    plt.annotate('maximum', xy=(np.pi / 2, 1.0),
                 xytext=(np.pi / 2 + 0.15, 1.5), weight='bold', color='r',
                 arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='r'))
    
    plt.annotate('spines', xy=(0.75, -3),
                 xytext=(0.35, -2.25), weight='bold', color='b',
                 arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='b'))
    
    plt.annotate('', xy=(0, -2.78),
                 xytext=(0.4, -2.32),
                 arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='b'))
    
    plt.annotate('', xy=(3.5, -2.98),
                 xytext=(3.6, -2.70),
                 arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='b'))
    
    # set text info
    plt.text(3.6, -2.70, "'|' is tickline", weight='bold', color='b')
    plt.text(3.6, -2.95, "3.5 is ticklabel", weight='bold', color='b')
    
    # set title
    plt.title('structure of matplotlib')
    
    # set legend
    plt.legend()
    
    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
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    structure

  • 相关阅读:
    51单片机基础篇系列-8个步骤入门51单片机
    信息论学习笔记(二):离散无噪声系统
    C++入门教程(五、数组与字符串)
    [word] word 如何在文档中进行分栏排版? #媒体#其他#媒体
    抽象类和接口的区别
    工厂WMS系统货架位管理:优化仓储效率
    JVM虚拟机:CMS垃圾回收器的日志分析
    设计循环队列(详解)
    降维:LDA推导及iris实例
    MySQL数据库期末考试试题及参考答案(09)
  • 原文地址:https://blog.csdn.net/qq_32019341/article/details/128169633