美文网首页
matplotlib pyplot 画图 基础api

matplotlib pyplot 画图 基础api

作者: zestloveheart | 来源:发表于2019-01-24 17:23 被阅读0次

    先生成几组的数据

    • sinx
      train_data = np.linspace(0, 10, 50)
      train_label = np.sin(train_data) + (np.random.rand(len(train_data)) - 0.5) * 0.2
    • random

    分割画布 subplot and subplots

    • subplot:随用随切,灵活布局
      plt.subplot(4,3,7):将画布分成4行,3列,取第7个子块
    image.png
    • subplots:规划合理,一步到位
      fig,ax = plt.subplots(4,3):将画布分成4行,3列后,返回一个元组,
      第一项是Figure Object,第二列是所有的ax组成的ndarray。
      如果想画第2行第2列幅图,就使用ax[1][1]
      值得注意的是:在subplots方法中有一个bool类型的squeeze参数,该参数如果为True,生成形状为n1或者1n的图表时,会只返回一个1维ndarray;如果是False,则生成一个2维的ndarray。默认是True
    image.png
    • 可以看到subplot和subplots有一定的区别
      • subplot调用后、其他位置都是空白的
      • subplots调用后、其他位置已经生成了图
      • 可以总结出来两者调用方式的差异,subplot调用了之后,只取了当前画布的指定块,所以还可以对其他的位置进行再分配。而subplots调用之后,就一次性将当前画布进行了分配。
      • 从代码量上看,subplot每次切割都需要一行,subplots切12个图,只需要一行。
      • 从灵活性上看,subplot可以进行再分配,subplots就不行。一个较为灵活的例子如下
    plt.subplot(4,3,7)
    plt.plot(train_data,train_label)
    plt.subplot(4,3,10)
    plt.plot(train_data,train_label)
    plt.subplot(2,1,1)
    plt.plot(train_data,train_label)
    plt.subplot(2,2,4)
    plt.plot(train_data,train_label)
    
    image.png

    散点图和曲线图 针对2维的简单数据

    • scatter:散点
      ax.scatter(train_data,train_label,marker = "+")
    • plot:连线
      ax.plot(train_data,train_label)


      image.png

    直接显示一个numpy或者图片

    a = np.linspace(1,256,256)
    a = a.reshape((16,16))
    plt.imshow(a)
    

    绘制3D图

    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax = Axes3D(fig)
    X = np.arange(-2, 2, 0.1)
    Y = np.arange(-2, 2, 0.1)
    X, Y = np.meshgrid(X, Y)
    R = np.sqrt(abs(4-(X ** 2) - (Y ** 2)))
    #Z = np.sin(R)
    # 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
    ax.plot_surface(X, Y, R, rstride=1, cstride=1, cmap='rainbow')
    plt.show()
    

    属性和样式设置

    plt.figure(i) 参数i设置图的编号
    plt.ylim(down,top) 设置y轴的上下界
    plt.margins(f) 参数f是0-1的小数,设置相对边距
    
    ax.set(xlabel="x", ylabel="y=f(x)", title="y = sin(x),red:predict data,bule:true data")
    ax.grid(True)
    

    更多图的画法可参考

    更多图
    一些样式
    一些样式
    颜色相关

    https://blog.csdn.net/claroja/article/details/70792880

    https://www.cnblogs.com/zhizhan/p/5615947.html

    相关文章

      网友评论

          本文标题:matplotlib pyplot 画图 基础api

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