• Numpy入门[2]——Matplotlib 基础


    Numpy入门[2]——Matplotlib 基础

    参考:

    https://ailearning.apachecn.org/

    Python直接使用plot()函数画图

    使用Jupyter进行练习

    在使用Numpy之前,需要了解一些画图的基础。

    Matplotlib是一个类似Matlab的工具包,主页地址为

    http://matplotlib.org

    导入 matplotlib 和 numpy:

    import numpy as np
    import matplotlib.pyplot as plt
    
    • 1
    • 2

    plot二维图

    plot(y)
    plot(x, y)
    plot(x, y, format_string)
    
    • 1
    • 2
    • 3

    只给定 y 值,默认以下标为 x 轴:

    # 等距分
    x = np.linspace(0, 2*np.pi,50)
    plt.plot(np.sin(x))
    
    • 1
    • 2
    • 3
    []
    
    • 1


    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8GBhphPF-1669946179150)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_4_1.png)]

    给定 x 和 y 值:

    plt.plot(x,np.sin(x))
    
    • 1
    []
    
    • 1

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vonmLHTi-1669946179152)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_6_1.png)]

    多条数据线:

    plt.plot(x, np.sin(x), x, np.sin(2*x))
    
    
    • 1
    • 2
    [,
     ]
    
    • 1
    • 2

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yUWXaRyq-1669946179153)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_8_1.png)]

    使用字符串,给定线条参数:
    image-20221128154653101

    image-20221128154711826

    plt.plot(x,np.sin(x),'r-^')
    
    • 1
    []
    
    • 1

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ge4jhnKO-1669946179156)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_10_1.png)]

    多线条:

    plt.plot(x, np.sin(x), "b-o",x, np.sin(2*x),"r-^")
    
    • 1
    [,
     ]
    
    • 1
    • 2

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZfzxppL0-1669946179159)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_12_1.png)]

    scatter 散点图

    scatter(x, y)
    scatter(x, y, size)
    scatter(x, y, size, color)
    
    • 1
    • 2
    • 3

    画二维散点图

    plt.plot(x,np.sin(x),"bo")
    
    • 1
    []
    
    • 1

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BYnNX7L1-1669946179160)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_15_1.png)]

    可以使用 scatter 达到同样的效果:

    plt.scatter(x, np.sin(x))
    
    • 1
    
    
    • 1

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20UYQcLE-1669946179161)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_17_1.png)]

    scatter函数与Matlab的用法相同,还可以指定它的大小,颜色等参数:

    from numpy import random
    # 产生随机数组
    x = random.rand(200)
    y = random.rand(200)
    size = random.rand(200) * 30
    color = random.rand(200)
    plt.scatter(x, y, size, color)
    # 显示颜色条
    plt.colorbar()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    
    
    • 1

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOBWPnOa-1669946179161)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_19_1.png)]

    多图

    使用figure()命令产生新的图像:

    t = np.linspace(0, 2 * np.pi, 50)
    x = np.sin(t)
    y = np.cos(t)
    plt.figure()
    plt.plot(x)
    plt.figure()
    plt.plot(y)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    []
    
    • 1

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-giRvyABB-1669946179162)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_21_1.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fpCfz158-1669946179162)(02Matlpotlib%E5%9F%BA%E7%A1%80_files/02Matlpotlib%E5%9F%BA%E7%A1%80_21_2.png)]

    或者使用 subplot 在一幅图中画多幅子图:

    subplot(row, column, index)
    
    • 1
    plt.subplot(1,2,1)
    plt.plot(x)
    plt.subplot(1,2,2)
    plt.plot(y)
    
    • 1
    • 2
    • 3
    • 4
    []
    
    • 1

    在这里插入图片描述

    标签

    可以在 plot 中加入 label ,使用 legend 加上图例:

    plt.plot(x, label='sin')
    plt.plot(y, label='cos')
    plt.legend()
    
    • 1
    • 2
    • 3
    
    
    • 1


    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LblOKyhR-1669946179163)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_25_1.png)]
​

    或者直接在 legend中加入:

    plt.plot(x)
    plt.plot(y)
    plt.legend(['sin','cos'])
    
    • 1
    • 2
    • 3
    
    
    • 1

    ​![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y1LecGzc-1669946179164)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_27_1.png)]
​](https://img-blog.csdnimg.cn/14fd110533b64ad2b81d8cb882db403a.png)

    坐标轴,标题,网格

    可以设置坐标轴的标签和标题:

    plt.plot(x,np.sin(x))
    plt.xlabel("radians")
    plt.ylabel("amplitude",fontsize="large")
    plt.title('Sin(x)')
    # 设置网格
    plt.grid()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ueZUo7sY-1669946179164)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_30_0.png)]

    清除、关闭图像

    • 清除已有图像使用:clf()
    • 关闭当前图像:close()
    • 关闭所有图像:close('all')

    从脚本中运行

    在脚本中使用 plot 时,通常图像是不会直接显示的,需要增加 show() 选项,只有在遇到 show() 命令之后,图像才会显示。

    直方图

    从高斯分布随机生成1000个点得到的直方图:

    plt.hist(np.random.randn(1000))
    
    • 1
    (array([  2.,   5.,  33., 147., 266., 298., 171.,  68.,   9.,   1.]),
     array([-4.06787487, -3.28558599, -2.50329712, -1.72100825, -0.93871938,
            -0.15643051,  0.62585836,  1.40814724,  2.19043611,  2.97272498,
             3.75501385]),
     )
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nhQ2tHyV-1669946179165)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_34_1.png)]

  • 相关阅读:
    ArcGIS_重分类
    python socket编程1 - socket创建参数说明及参考规范
    带隙基准中运放相位裕度与增益裕度
    【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码
    报考PMP怕上当,都会遇到哪些坑,我该如何避开这些坑?
    SpringCach
    WebDAV之葫芦儿·派盘+多彩笔记
    Swift 面试题及答案整理,最新面试题
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    CF Round 479 (Div. 3)--E. Cyclic Components(DFS求无向图中独立环的个数)
  • 原文地址:https://blog.csdn.net/weixin_47692652/article/details/128143128