zoukankan      html  css  js  c++  java
  • matplotlib基础

    Matplotlib 基础

    注:本文中的程序都默认引入了numpy库和matplotlib库,并且分别简写为np与plt;如果读者不知道怎么使用numpy库,可以移步到这一博客上进行简单的学习

    一、简单绘图案例

    #简单的画图例子
    x=np.linspace(0,1,num=200)#横坐标
    y1=x**2#纵坐标1
    y2=x*3+0.2#纵坐标2
    #图片框1
    plt.figure(1)
    plt.plot(x,y1, label='line1')#绘制曲线
    plt.plot(x,y2, linewidth=5, color='coral', linestyle='--', label='line2')#绘制不同风格的曲线
    plt.legend()
    #图片框2
    plt.figure(2)
    plt.plot(x,y2)
    plt.show()#显示

    显示结果:

     

     

     

     

     

     

     

     

     

    二、设置坐标轴

    #坐标轴设置
    x=np.linspace(0,1,num=200)
    y1=x**2
    #图片框1
    plt.figure(1)
    plt.plot(x,y1)#绘制曲线
    #坐标轴设置
    plt.xlim((0,1))#x轴取值范围
    plt.ylim((0,1))#y轴取值范围
    plt.xlabel('x')#x轴轴标
    plt.ylabel('y')#y轴轴标
    #x轴ticks设置
    new_ticks=np.linspace(0,1,5)
    plt.xticks(new_ticks)
    #设置绘图坐标轴的位置
    axis=plt.gca()#获取当前的坐标轴
    axis.spines['left'].set_position(('data',  0.1))#将y轴设置到x轴上为1的位置
    axis.spines['bottom'].set_position(('data', 0.5))#将x轴设置到y轴上为1的位置
    plt.show()

    输出结果:

    三、图片标注

    #图片标注
    x=np.linspace(0,1,num=200)
    y1=x**2
    plt.figure(1)
    plt.plot(x,y1,label='line 1')#绘制曲线,label设置为1
    plt.legend()
    #设置绘图坐标轴的位置
    axis=plt.gca()#获取当前的坐标轴
    axis.spines['left'].set_position(('data', 0))#将y轴设置到x轴上为0的位置
    axis.spines['bottom'].set_position(('data', 0))#将x轴设置到y轴上为0的位置
    #被标注点
    x0=0.5
    y0=0.5**2
    plt.scatter(x0, y0, s=30, color='red')#通过散点图来绘制点
    plt.plot([x0,x0],[y0,0], color='black', linestyle='--',linewidth=3)#绘制一条垂直于x轴的虚线
    #添加标注
    plt.annotate('annotation', [x0+0.1,y0], fontsize=10)#在坐标[x0+0.1,y0]处添加标注
    plt.show()

    输出结果:

    四、设置坐标轴游标字体大小

    #操作坐标轴的label
    x=np.linspace(0,2,num=200)
    y1=x**2
    #图片框1
    plt.figure(1)
    plt.plot(x,y1)#绘制曲线
    #坐标轴设置
    plt.xlim((0,2))#x轴取值范围
    plt.ylim((0,2))#y轴取值范围
    ax=plt.gca()#拿到现在的坐标轴
    for label in ax.get_xticklabels() +ax.get_yticklabels():
        label.set_fontsize(12)#设置坐标轴label的字体大小
    plt.show()

    输出结果:

    五、绘制散点图

    # scatter 散点图
    x=np.random.normal(0,1,100)
    y=np.random.normal(0,1,100)
    plt.scatter(x,y, s=50, c='blue',marker='o',alpha=0.6)
    plt.show()

    六、柱状图

    x=np.arange(0,10, step=1)
    y=np.arange(0,10, step=1)
    plt.bar(x,y, color='red', width=0.3)
    #在每一个柱形图上面添加文字标注
    for x0,y0 in zip(x,y): plt.text(x0,y0, '%i'%y0) plt.show()

    输出为:

    七、等高线图

    #等高线图
    x=np.linspace(0,10, 100)
    y=np.linspace(0,10, 100)
    x_m,y_m=np.meshgrid(x,y)#网格化
    z=x_m**2+y_m**2
    plt.contourf(x_m, y_m, z, 10, alpha=0.5, cmap=plt.cm.hot)#绘制热图,10代表着高度的分级
    c=plt.contour(x_m,y_m, z, 10, colors='black', linewidth=11)#绘制等高线
    plt.clabel(c, inline=True, fontsize=10)#为等高线添加标注
    plt.show()

    八、3D绘图

    #3D绘图
    from mpl_toolkits.mplot3d import Axes3D
    x=np.linspace(0,10, 100)
    y=np.linspace(-10,10, 100)
    x_m,y_m=np.meshgrid(x,y)#网格化
    z=x_m**2+y_m**2
    fig=plt.figure()
    ax=Axes3D(fig)#为figure添加3D坐标轴
    ax.plot_surface(x_m, y_m, z,rstride=5, cstride=5, cmap=plt.cm.hot)#绘制3D的表面, rstide为行跨度,cstride为列跨度
    ax.contourf(x_m, y_m, z, zdir='z',offset=6)#offset指的是等高线图与xy平面之间的距离, zdir设置投影方向
    plt.show()

    九、subplot 绘制多个图

    #subplot,绘制子图像
    x=np.linspace(0,1,100)
    y=x**2
    
    plt.figure()
    plt.subplot(2, 2,1)#将figure划分为2*2,在编号为1的位置绘图
    plt.plot(x,y)
    
    plt.subplot(2, 2,2)#将figure划分为2*2,在编号为2的位置绘图
    plt.plot(x,x)
    
    plt.subplot(2, 2,3)#将figure划分为2*2,在编号为3的位置绘图
    plt.plot(y,y)
    
    plt.subplot(2, 2,4)#将figure划分为2*2,在编号为4的位置绘图
    plt.plot(y,y)
    
    plt.show()

  • 相关阅读:
    C#中的String与string
    类和结构的异同点?
    HTTP 无状态啊无状态啊
    重载运算符
    Lambda与委托
    Js与正则表达式
    字符函数PATINDEX()与STUFF()
    C#中的托管与非托管
    原码,反码,补码
    日期函数与转型
  • 原文地址:https://www.cnblogs.com/AlgrithmsRookie/p/11543505.html
Copyright © 2011-2022 走看看