美文网首页程序员
通过一个简单的图像熟悉matplotlib的用法

通过一个简单的图像熟悉matplotlib的用法

作者: UlissesJr | 来源:发表于2018-09-02 20:48 被阅读82次

    推荐使用jupyder notebook

    代码如下:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-np.pi,np.pi,256,endpoint=True) #np.linspace的作用是实现间隔采样
    c,s = np.cos(x),np.sin(x) #对c,s进行函数话的赋值
    plt.figure(1)
    plt.plot(x,c,color="black",linewidth=1.0,linestyle='-',label='COS',alpha=0.5)
    plt.plot(x,s,'b*',label='sin') #alpha透明度 
    plt.title("SIN AND COS")  #为图片添加标题
    ax = plt.gca()    #gca是轴的编辑器 这里赋值给ax
    ax.spines["right"].set_color("none")  #对轴进行颜色和位置的设置 
    ax.spines["top"].set_color("none")  
    ax.spines["left"].set_position(("data",0))
    ax.spines["bottom"].set_position(("data",0))
    ax.xaxis.set_ticks_position("bottom")  #设置x轴的数值在轴上的位置
    ax.yaxis.set_ticks_position("left")
    plt.xticks([-np.pi,-np.pi/2,np.pi/2,np.pi]) #对x轴的坐标刻度进行设置
    plt.yticks(np.linspace(-1,1,5,endpoint=True)) #对y轴的坐标刻度进行设置
    for label in ax.get_xticklabels() + ax.get_xticklabels():
        label.set_fontsize(16)
        label.set_bbox(dict(facecolor="yellow",edgecolor="red"))
    plt.legend(loc="upper left")  #设置图例的位置
    plt.grid()  #打印网格线 
    # plt.axis([-1,1,-0.5,1]) #设置图像的显示范围
    plt.fill_between(x,np.abs(x)<0.5,c,c>0.5,color="green",alpha=0.25)#按照要求对图像进行填充
    t = 1
    plt.plot([t,t],[0,np.cos(t)],"black",linewidth=1,linestyle="--")#在x=1的位置加一条虚线 
    #为这条虚线加一条注释
    plt.annotate("cos(1)",xy=(t,np.cos(1)),xycoords="data",xytext=(+10,+30),textcoords="offset points",arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))
    #xy为注释点、xytext表示注释点的偏移量、textcoords在此处的设置表示偏移为相对偏移、arrowprops设置箭头
    plt.show()
    

    图像如下:


        能把上图画出来,也算是对matplotlib入门了。

    下面我们来进行子图和多种常用图形的绘制
    1.散点图 scatter
    #1.散点图 scatter
    fig = plt.figure()
    fig.add_subplot(3,3,1) #确定子图在整体的位置
    n = 128
    X= np.random.normal(0,1,n) #X为随机数 个数128个
    Y = np.random.normal(0,1,n) #Y为随机数 个数128个 
    T = np.arctan2(Y,X) 
    # plt.axis([0.025,0.025,0.95,0.95]) #指定显示范围
    plt.scatter(X,Y,s=10,c=T,alpha=.5) #s表示点的大小 c表示color alpha透明度
    plt.xlim(-1.5,1.5),plt.xticks([]) #xlim表示x的范围
    plt.ylim(-1.5,1.5),plt.yticks([])
    # plt.axis()
    plt.title("scatter")
    plt.xlabel("x")
    plt.ylabel("y")
    plt.show()
    
    2.柱状图 bar
    #2.柱状图 bar
    fig.add_subplot(3,3,2)
    n = 10
    X = np.arange(n) #定义一个0-9的数列
    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') ##+表示把Y1放到上面 -号表示把Y2方到下面
    plt.bar(X,-Y2,facecolor='#ff9999',edgecolor='white')
    
    for x,y in zip(X,Y1):
        plt.text(x+0.4,y+0.05,'%.2f'%y,ha='center',va='bottom')
    for x,y in zip(X,Y2):
        plt.text(x+0.4,-y-0.05,'%.2f'%y,ha='center',va='top')
    plt.show()
    
    3.饼图 pie
    #3.饼图 pie
    fig.add_subplot(333)
    n = 20
    Z = np.ones(n)
    Z[-1] *= 2
    plt.pie(Z,explode=Z*.05,colors=['%f'%(i/float(n)) for i in range(n)],labels=['%.2f'%(i/float(n)) for i in range(n)])
    plt.gca().set_aspect('equal') #设置图像为正圆
    plt.xticks([]),plt.yticks([])
    plt.show()
    
    4.极坐标 polar
    #4.极坐标 polar
    fig.add_subplot(334)
    n = 20
    theta = np.arange(0.0,2*np.pi,2*np.pi/n)
    radii = 10*np.random.rand(n)
    plt.polar(theta,radii)
    plt.show()
    
    5.热图 hot map
    #5.热图 hot map
    from matplotlib import cm #cm==colormap 用来上色
    fig.add_subplot(335)
    data = np.random.rand(10,10)
    cmap = cm.Blues
    map = plt.imshow(data,interpolation='nearest',cmap=cmap,aspect='auto',vmin=0,vmax=1)
    plt.show()
    
    6.3D图 3D
    #6.3D图  3D
    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax=fig.add_subplot(336,projection="3d") 
    ax.scatter(1,1,3,s=100)
    plt.show()
    
    7.热力图 heat map
    #7.热力图 heat map
    fig.add_subplot(3,1,3)
    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=.75,camp=plt.cm.hot)
    plt.show()
    

    相关文章

      网友评论

        本文标题:通过一个简单的图像熟悉matplotlib的用法

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