matplotlib 学习

作者: Thinkando | 来源:发表于2018-10-11 17:02 被阅读20次
    1. 基本语法
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-1,1,50) # 生成-1到1,50个点
    y = x**2
    
    plt.figure() # 创建一个窗口
    plt.plot(x,y) # 在窗口上画一副图,x是横坐标,y是纵坐标
    plt.show() # 输入show,运行时才能看到图
    
    image.png
    1. 加一条线
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-1,1,50) # 生成-1到1,50个点
    y1 = x**2
    y2 = 2*x+1
    
    plt.figure() # 创建一个窗口
    plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--') # 加一条颜色为红色,宽度为1的虚线
    plt.plot(x,y1) # 在窗口上画一副图,x是横坐标,y是纵坐标
    plt.show() # 输入show,运行时才能看到图
    
    image.png
    1. 坐标轴设置
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-3,3,50) # 生成-1到1,50个点
    y1 = x**2
    y2 = 2*x+1
    
    plt.figure() # 创建一个窗口
    plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--') # 加一条颜色为红色,宽度为1的虚线
    plt.plot(x,y1) # 在窗口上画一副图,x是横坐标,y是纵坐标
    plt.xlim((-1,2)) # 设置x轴坐标的范围是-1,2
    plt.ylim((-2,3)) # 设置y轴坐标的范围是-2,3
    plt.xlabel('I am x') # 设置x轴标签
    plt.ylabel('I am y') # 设置y轴标签
    new_ticks = np.linspace(-1,2,5) # -1,2 生成5个点
    plt.xticks(new_ticks) # 把x 轴的小标换了
    plt.yticks([-2,-1,0,1,1.5,2,3],
               ["A","B","C","D","hello","world","!"]) # 把y标签换成你想换的小标
    
    
    plt.show() # 输入show,运行时才能看到图
    
    image.png
    • 移动坐标轴
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-3,3,50) # 生成-1到1,50个点
    y1 = x**2
    y2 = 2*x+1
    
    plt.figure() # 创建一个窗口
    plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--') # 加一条颜色为红色,宽度为1的虚线
    plt.plot(x,y1) # 在窗口上画一副图,x是横坐标,y是纵坐标
    plt.xlim((-1,2)) # 设置x轴坐标的范围是-1,2
    plt.ylim((-2,3)) # 设置y轴坐标的范围是-2,3
    plt.xlabel('I am x') # 设置x轴标签
    plt.ylabel('I am y') # 设置y轴标签
    new_ticks = np.linspace(-1,2,5) # -1,2 生成5个点
    plt.xticks(new_ticks) # 把x 轴的小标换了
    plt.yticks([-2,-1,0,1,1.5,2,3],
               ["A","B","C","D","hello","world","!"]) # 把y标签换成你想换的小标
    
    ax=plt.gca() # 一个图的四个边
    ax.spines['right'].set_color('none') # 右边设为0
    ax.spines['top'].set_color('none') # 上边设为0
    ax.xaxis.set_ticks_position('bottom') # 下边设为x轴
    ax.yaxis.set_ticks_position('left') # 左边设为y轴
    ax.spines['bottom'].set_position(('data',0))
    ax.spines['left'].set_position(('data',0))  # 把原点移动到0,0点
    plt.show() # 输入show,运行时才能看到图
    
    1. legend 图例
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-3,3,50) # 生成-1到1,50个点
    y1 = x**2
    y2 = 2*x+1
    
    plt.figure() # 创建一个窗口
    
    plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--',label='down') # 加一条颜色为红色,宽度为1的虚线
    plt.plot(x,y1,label='up') # 在窗口上画一副图,x是横坐标,y是纵坐标
    plt.legend(loc='best') # 让电脑自己找最好的位置
    plt.xlim((-1,2)) # 设置x轴坐标的范围是-1,2
    plt.ylim((-2,3)) # 设置y轴坐标的范围是-2,3
    plt.xlabel('I am x') # 设置x轴标签
    plt.ylabel('I am y') # 设置y轴标签
    new_ticks = np.linspace(-1,2,5) # -1,2 生成5个点
    plt.xticks(new_ticks) # 把x 轴的小标换了
    plt.yticks([-2,-1,0,1,1.5,2,3],
               ["A","B","C","D","hello","world","!"]) # 把y标签换成你想换的小标
    
    plt.show() # 输入show,运行时才能看到图
    
    image.png
    1. Annotation 标注
    import matplotlib.pyplot as plt
    import numpy as np
    
    x=np.linspace(-3,3,50)
    y=2*x+1
    plt.figure(num=1,figsize=(8,5),)
    plt.plot(x,y,)
    
    ax=plt.gca()
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    ax.spines['top'].set_color('none')
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data',0))
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0))
    
    x0=1
    y0=x0*2+1
    plt.scatter(x0,y0,s=50,color='b') # 用散点的形式加入,大小为50,颜色为blue
    plt.plot([x0,x0],[y0,0],'k--',lw=2.5) #画一条垂直的虚线,大小为2.5,颜色为black
    
    # 注释一
    plt.annotate("2x+1=%s"% y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',\
                 fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
    
    # 注释二
    plt.text(-3.0,3,"This is the annotation.",fontdict={'size':16,'color':'r'})
    
    
    1. 散点图
    import matplotlib.pyplot as plt
    import numpy as np
    
    n=1024
    X=np.random.normal(0,1,n) # 生成平均数是0,方差是1的1024个数
    Y=np.random.normal(0,1,n)
    T=np.arctan2(Y,X) #设置点的颜色
    plt.scatter(X,Y,s=75,c=T,alpha=0.5) # alpha 透明度50%
    
    plt.xlim((-1.5,1.5))
    plt.ylim((-1.5,1.5))
    plt.xticks(()) # 隐藏坐标
    plt.yticks(())
    plt.show()
    
    image.png
    1. 柱状图
    import matplotlib.pyplot as plt
    import numpy as np
    
    n=12
    X = np.arange(n)
    Y1=(1-X/float(n))*np.random.uniform(0.5,1.0,n)
    Y2=(1-X/float(n))*np.random.uniform(0.5,1.0,n)
    
    plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white') # 朝上的Y
    plt.bar(X,-Y2,facecolor='#ff9999',edgecolor='white') # 朝下的Y
    
    for x,y in zip(X,Y1): # zip X,Y分别传入x,y
        #ha,ve,横向和纵向的对其方式
        plt.text(x,y+0.05,'%.2f'%y,ha='center',va='bottom')
    for x,y in zip(X,Y2): # zip X,Y分别传入x,y
        #ha,ve,横向和纵向的对其方式
        plt.text(x,-y-0.05,'%.2f'%y,ha='center',va='top')
    plt.xlim(-.5,n)
    plt.xticks(())
    plt.ylim(-1.25,1.25)
    plt.yticks(())
    plt.show()
    
    image.png

    8.等高线

    import matplotlib.pyplot as plt
    import numpy as np
    
    def f(x,y):
        return (1-x/2 +x**5+y**3)*np.exp(-x**2-y**2)
    
    n=256
    x=np.linspace(-3,3,n)
    y=np.linspace(-3,3,n)
    X,Y=np.meshgrid(x,y) # 网格的输入值
    plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot) # y的一个值对应一个颜色
    C=plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5) # 8 是等高线的密度
    plt.clabel(C,inline=True,fontsize=10)
    plt.xticks(())
    plt.yticks(())
    plt.show()
    
    image.png
    1. image
    import matplotlib.pyplot as plt
    import numpy as np
    
    # image data
    a = np.array([0.313660827978, 0.365348418405, 0.423733120134,
                  0.365348418405, 0.439599930621, 0.525083754405,
                  0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3)
    
    """
    for the value of "interpolation", check this:
    http://matplotlib.org/examples/images_contours_and_fields/interpolation_methods.html
    for the value of "origin"= ['upper', 'lower'], check this:
    http://matplotlib.org/examples/pylab_examples/image_origin.html
    """
    plt.imshow(a, interpolation='nearest', cmap='bone', origin='lower')
    plt.colorbar(shrink=.92) #压缩成90%
    
    plt.xticks(())
    plt.yticks(())
    plt.show()
    
    image.png

    10.subplot

    import matplotlib.pyplot as plt
    
    # example 1:
    ###############################
    plt.figure(figsize=(6, 4))
    # plt.subplot(n_rows, n_cols, plot_num)
    plt.subplot(2, 2, 1)
    plt.plot([0, 1], [0, 1])
    
    plt.subplot(222)
    plt.plot([0, 1], [0, 2])
    
    plt.subplot(223)
    plt.plot([0, 1], [0, 3])
    
    plt.subplot(224)
    plt.plot([0, 1], [0, 4])
    
    plt.tight_layout()
    plt.show()
    
    image.png
    # method 1: subplot2grid
    ##########################
    plt.figure()
    ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)  # stands for axes
    ax1.plot([1, 2], [1, 2])
    ax1.set_title('ax1_title')
    ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
    ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
    ax4 = plt.subplot2grid((3, 3), (2, 0))
    ax4.scatter([1, 2], [2, 2])
    ax4.set_xlabel('ax4_x')
    ax4.set_ylabel('ax4_y')
    ax5 = plt.subplot2grid((3, 3), (2, 1))
    plt.show()
    
    image.png
    # method 2: gridspec
    #########################
    plt.figure()
    gs = gridspec.GridSpec(3, 3)
    # use index from 0
    ax6 = plt.subplot(gs[0, :])
    ax7 = plt.subplot(gs[1, :2])
    ax8 = plt.subplot(gs[1:, 2])
    ax9 = plt.subplot(gs[-1, 0])
    ax10 = plt.subplot(gs[-1, -2])
    plt.show()
    
    image.png
    import matplotlib.pyplot as plt
    import matplotlib.gridspec as gridspec
    
    # method 3: easy to define structure
    ####################################
    f, ((ax11, ax12), (ax13, ax14)) = plt.subplots(2, 2, sharex=True, sharey=True)
    ax11.scatter([1,2], [1,2])
    
    plt.tight_layout()
    plt.show()
    
    image.png
    1. 图中图
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    x = [1, 2, 3, 4, 5, 6, 7]
    y = [1, 3, 4, 2, 5, 8, 6]
    
    # below are all percentage
    left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
    ax1 = fig.add_axes([left, bottom, width, height])  # main axes
    ax1.plot(x, y, 'r')
    ax1.set_xlabel('x')
    ax1.set_ylabel('y')
    ax1.set_title('title')
    
    ax2 = fig.add_axes([0.2, 0.6, 0.25, 0.25])  # inside axes
    ax2.plot(y, x, 'b')
    ax2.set_xlabel('x')
    ax2.set_ylabel('y')
    ax2.set_title('title inside 1')
    
    
    # different method to add axes
    ####################################
    plt.axes([0.6, 0.2, 0.25, 0.25])
    plt.plot(y[::-1], x, 'g')
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title('title inside 2')
    
    plt.show()
    
    image.png

    相关文章

      网友评论

        本文标题:matplotlib 学习

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