美文网首页
Matplotlib入门教程

Matplotlib入门教程

作者: 自然语言处理研究室 | 来源:发表于2018-06-26 23:11 被阅读0次

    欢迎转载,转载请注明出处

    环境:python3
    安装:pip install matplotlib

    二维图形——直线

    import matplotlib.pyplot as plt
    import numpy as np
    
    X = np.linspace(-10, 10, 100)  # [-10, 10]这个区间里,生成100个点,包括-10和10在内
    Y = 2 * X + 1
    
    plt.figure()  # 每个图形都有一个figure窗口,都会显示在这个figure中,可以定义多个figure,后边会介绍
    plt.plot(X, Y, color='red')
    plt.show()
    
    直线

    三维图形

    import matplotlib.pyplot as plt
    import numpy as np
    from mpl_toolkits.mplot3d import Axes3D  # 绘制三维图形,需要引入matplotlib的3D包
    
    X = np.linspace(-10, 10)
    Y = np.linspace(-10, 10)
    X, Y = np.meshgrid(X, Y)
    Z = np.sqrt(X**2 + Y**2)
    
    fig = plt.figure()  # 生成一个figure,figure是用来显示二维图形的,三维图形需要投影到二维屏幕上才能显示
    ax = Axes3D(fig)
    ax.plot_surface(X, Y, Z, cmap='rainbow')  # cmap是color map的意思,后边会介绍
    plt.show()
    
    三维图形

    同时显示多个图形

    一个figure就是一个图形窗口,前边的两个例子,都只创建了一个figure,如果要显示多个图形,一种方法是创建多个figure,另一种是在一个figure中显示多个小图。

    多个figure的例子:

    import matplotlib.pyplot as plt
    import numpy as np
    
    X = np.linspace(-10, 10, 100)  # [-10, 10]这个区间里,生成100个点,包括-10和10在内
    Y0 = np.sin(X)
    Y1 = X**2
    Y2 = 2 * X + 5
    
    plt.figure()  # 第一个figure
    plt.plot(X, Y0, color='b')
    
    plt.figure()  # 第二个figure
    plt.plot(X, Y1, color='g')
    plt.plot(X, Y2, color='r')
    
    plt.show()
    
    第一个figure 第二个figure

    多个小图的例子:

    import matplotlib.pyplot as plt
    import numpy as np
    
    X = np.linspace(-10, 10, 100)  # [-10, 10]这个区间里,生成100个点,包括-10和10在内
    Y0 = np.sin(X)
    Y1 = X**2
    Y2 = np.tan(X)
    
    plt.figure()  # 一个figure
    
    plt.subplot(2, 2, 1)  # 将figure分成2x2四个子图,1表示在第一个子图里作图
    plt.plot(X, Y0, color='b')
    
    plt.subplot(2, 2, 2)  # 在2x2四个子图的第二个子图里作图
    plt.plot(X, Y1, color='g')
    
    plt.subplot(223)  # 另一种表示法,在第三个子图里作图
    plt.plot(X, Y2, color='r')
    
    plt.subplot(224)  # 在第四个子图里作图
    plt.plot([0, 1], [0, 1])  # 两个列表对应的坐标点的关系:[x0, x1], [y0, y1]
    
    plt.show()
    
    四个小图

    以上四个例子可以解决大部分的需求了,下面介绍更多的细节来美化图形。

    线型、颜色

    import matplotlib.pyplot as plt
    import numpy as np
    
    X = np.linspace(-100, 100, 100)  # 
    Y0 = -X**2
    Y1 = X**2
    
    plt.figure()
    plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
    plt.plot(X, Y1, color='b', linewidth=5.5, linestyle='-.', alpha=.4)
    plt.show()
    
    线型、颜色

    横纵坐标标签

    import matplotlib.pyplot as plt
    import numpy as np
    
    X = np.linspace(-100, 100, 100)  # 
    Y0 = -X**2
    Y1 = X**2
    
    plt.figure()
    plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
    plt.plot(X, Y1, color='b', linewidth=2.5, linestyle='-.')
    
    plt.xlabel('X Label', color='b', size=14)  # 横坐标标签,并设置颜色,尺寸大小
    plt.ylabel('Y Label', color='r', size=14)  # 纵坐标标签
    
    plt.show()
    
    坐标标签

    横纵坐标显示范围

    import matplotlib.pyplot as plt
    import numpy as np
    
    X = np.linspace(-100, 100, 100)  # 
    Y0 = -X**2
    Y1 = X**2
    
    plt.figure()
    plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
    plt.plot(X, Y1, color='b', linewidth=2.5, linestyle='-.')
    
    plt.xlabel('X Label', color='b', size=14)  # 横坐标标签,并设置颜色,尺寸大小
    plt.ylabel('Y Label', color='r', size=14)  # 纵坐标标签
    
    plt.xlim([-30, 30])  # 横坐标显示范围
    plt.ylim([-100, 100])  # 纵坐标显示范围
    
    plt.show()
    
    坐标范围

    坐标轴位置、定制坐标刻度

    import matplotlib.pyplot as plt
    import numpy as np
    
    X = np.linspace(-100, 100, 100)  # 
    Y0 = -X**2
    Y1 = X**2
    
    plt.figure()
    plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
    plt.plot(X, Y1, color='b', linewidth=2.5, linestyle='-.')
    
    plt.xlabel('X Label', color='b', size=14)  # 横坐标标签,并设置颜色,尺寸大小
    plt.ylabel('Y Label', color='g', size=14)  # 纵坐标标签
    
    plt.xlim([-30, 30])  # 横坐标显示范围
    plt.ylim([-100, 100])  # 纵坐标显示范围
    
    ## 坐标轴位置
    axis = plt.gca()  # get current axis
    axis.spines['top'].set_color('none')  # 将右边和顶部的边框颜色去掉
    axis.spines['right'].set_color('none')
    
    axis.spines['bottom'].set_position(['data', 0])  # 将下部和左边的边框设置到0位置
    axis.spines['left'].set_position(['data', 0])
    
    axis.xaxis.set_ticks_position('bottom')  # 将x坐标、y坐标轴绑定到下边框、左边框
    axis.yaxis.set_ticks_position('left')
    
    
    ## 定制化坐标刻度
    plt.xticks([-30, -10, 10, 30],  # 每个刻度值一一对应一个字符串
               ['A30', 'A10', 'B10', 'B30'], color='y')
    
    plt.show()
    
    坐标轴、坐标刻度

    图例

    import matplotlib.pyplot as plt
    import numpy as np
    
    X = np.linspace(-100, 100, 100)  # 
    Y0 = -X**2
    Y1 = X**2
    
    plt.figure()
    line0, = plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
    line1, = plt.plot(X, Y1, color='b', linewidth=2.5, linestyle='-.')
    
    ## 添加图例
    plt.legend(handles=[line0, line1], labels=['line0', 'line1'], loc='best')
    
    plt.xlabel('X Label', color='b', size=14)  # 横坐标标签,并设置颜色,尺寸大小
    plt.ylabel('Y Label', color='g', size=14)  # 纵坐标标签
    
    plt.xlim([-30, 30])  # 横坐标显示范围
    plt.ylim([-100, 100])  # 纵坐标显示范围
    
    ## 坐标轴位置
    axis = plt.gca()  # get current axis
    axis.spines['top'].set_color('none')  # 将右边和顶部的边框颜色去掉
    axis.spines['right'].set_color('none')
    
    axis.spines['bottom'].set_position(['data', 0])  # 将下部和左边的边框设置到0位置
    axis.spines['left'].set_position(['data', 0])
    
    axis.xaxis.set_ticks_position('bottom')  # 将x坐标、y坐标轴绑定到下边框、左边框
    axis.yaxis.set_ticks_position('left')
    
    
    ## 定制化坐标刻度
    plt.xticks([-30, -10, 10, 30],  # 每个刻度值一一对应一个字符串
               ['A30', 'A10', 'B10', 'B30'], color='y')
    
    plt.show()
    
    图例

    相关文章

      网友评论

          本文标题:Matplotlib入门教程

          本文链接:https://www.haomeiwen.com/subject/mhjvyftx.html