• Matplotlib用法使用、Matplotlib绘图作图画图


    一、Matplotlib

    Matplotlib:专门用于开发2D或3D图表,以渐进、交互式方式实现数据可视化

    可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法

    • 能将数据进行可视化,更直观的呈现
    • 使数据更加客观、更具说服力

    二、图形绘制函数说明

    1. 安装命令
    2. pip:pip install matplotlib
    3. conda:conda install matplotlib
    • 导包:matplotlib.pytplot包含了一系列类似于matlab的画图函数
    • 创建画布:plt.figure(figsize=(),dpi=),返回fig对象
      • figsize:指定图的长宽
      • dpi:图像的清晰度
    • 绘制折线图:plt.plot(x, y)
    • 自定义刻度
      • x轴:plt.xticks(x, **kwargs),x为要显示的刻度值
      • y轴:plt.yticks(y, **kwargs)
    • 添加网格:plt.grid(True, linestyle='--', alpha=0.5),可更清楚观察图像对应值,alpha为网格粗细,范围0-1
    • 描述信息
      • x轴:plt.xlabel("x轴信息")
      • y轴:plt.ylabel("y轴信息")
      • 标题:plt.title("图像标题",fontsize='20'),fontsize为字体大小
    • 显示图例:plt.legend(loc="best"),注:须在plt.plot()中设置一个label,若不设置,没法显示
    • 多个坐标系显示
      • plt.subplots(nrows=, ncols=)
    • 保存:plt.savefig("路径") ,将图像保存到指定路径
    • 显示图像:plt.show(),plt.show()会释放figure资源,如在显示图像之后保存图片将只能保存空图片

    简单演示如下

    1. import matplotlib.pyplot as plt
    2. plt.figure(figsize=(5, 3), dpi=100) # 创建画布
    3. plt.plot([1, 2, 3, 4, 5, 6 ,7], [16,18,17,13,11,11,13]) # 绘制折线图
    4. plt.show() # 显示图像

    三、图像添加辅助功能信息

    1. import matplotlib.pyplot as plt
    2. import random
    3. # 中文显示问题
    4. from pylab import mpl
    5. mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置显示中文字体
    6. mpl.rcParams["axes.unicode_minus"] = False # 设置正常显示符号
    7. # 画出温度变化图
    8. # 数据准备
    9. x = range(0, 60) # 随机生成[0, 50)范围内步长为1的整数列表
    10. y = [random.uniform(13, 20) for i in x] # random.uniform():随机生成13-20范围内的浮点数
    11. plt.figure(figsize=(15, 5), dpi=80) # 创建画布
    12. plt.plot(x, y) # 绘制折线图
    13. x_ticks_label = ["20时{}分".format(i) for i in x] # 构建x轴刻度标签
    14. # y_ticks = range(40) # 构建y轴刻度
    15. # 修改x,y轴坐标的刻度显示
    16. plt.xticks(x[::5], x_ticks_label[::5])
    17. # plt.yticks(y_ticks[::1])
    18. plt.grid(True, linestyle='--', alpha=0.5) # 添加网格
    19. # 描述信息
    20. plt.xlabel("时间")
    21. plt.ylabel("温度")
    22. plt.title("20:00-21:00间温度变化图", fontsize=20)
    23. plt.savefig("./zhangshu.jpg") # 保存至指定位置
    24. plt.show() # 显示图像

    输出如下

    指定文件夹内新增图像文件

    四、一个坐标系绘制多个图像

    只需多次使用plot,其中color及linestyle可取值如下

    颜色字符风格字符
    r 红色- 实线
    g 绿色- - 虚线
    b 蓝色-. 点划线
    w 白色: 点虚线
    c 青色' ' 留空、空格
    m 洋红
    y 黄色
    k 黑色

    显示图例plt.legend(loc='best')或 plt.legend(loc=0),另需在plot中设置label,loc可取值如下

    位置字符位置代码
    'best'0
    'upper right'1
    'upper left'2
    'lower left'3
    'lower right'4
    'right'5
    'center left'6
    'center right'7
    'lower center'8
    'upper center'9
    'center'10

    举例如下

    1. import matplotlib.pyplot as plt
    2. import random
    3. from pylab import mpl
    4. mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置显示中文字体
    5. mpl.rcParams["axes.unicode_minus"] = False # 设置正常显示符号
    6. # 画出温度变化图
    7. # 数据准备
    8. x = range(0, 60) # 随机生成[0, 50)范围内步长为1的整数列表
    9. y = [random.uniform(13, 20) for i in x] # random.uniform():随机生成13-20范围内的浮点数
    10. yy = [random.uniform(5, 17) for i in x] # random.uniform():随机生成13-20范围内的浮点数
    11. plt.figure(figsize=(15, 5), dpi=80) # 创建画布
    12. plt.plot(x, y, color='y', linestyle='-.',label='赣州') # 绘制折线图,点划线
    13. plt.plot(x, yy, color='r', linestyle='--', label='樟树') # 多次plot绘制多个折线图,虚线
    14. x_ticks_label = ["20时{}分".format(i) for i in x] # 构建x轴刻度标签
    15. # y_ticks = range(40) # 构建y轴刻度
    16. # 修改x,y轴坐标的刻度显示
    17. plt.xticks(x[::5], x_ticks_label[::5])
    18. # plt.yticks(y_ticks[::1])
    19. plt.grid(True, linestyle='-', alpha=0.9) # 添加网格
    20. plt.legend(loc=0) # 显示图例
    21. # 描述信息
    22. plt.xlabel("时间")
    23. plt.ylabel("温度")
    24. plt.title("20:00-21:00间温度变化图", fontsize=18)
    25. plt.savefig("./temperature.jpg") # 保存至指定位置
    26. plt.show() # 显示图像

    结果如下

    五、多个坐标系绘制多个图像

    通过subplots函数实现

    • matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw):创建一个带有多个axes(坐标系/绘图区)的图 
      • nrows,ncols:设置有几行几列坐标系
      • 返回图对象fig及相应数量的坐标系axes
      • plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法

    代码演示如下

    1. # 数据准备
    2. x = range(24)
    3. y_zhshu = [random.uniform(5, 15) for i in x]
    4. y_ganzh = [random.uniform(10, 20) for i in x]
    5. fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15, 5), dpi=100) # 创建画布
    6. # 绘制图像
    7. axes[0].plot(x, y_zhshu, color="g", linestyle=":",label="樟树")
    8. axes[1].plot(x, y_ganzh, color="r", linestyle="-.", label="赣州")
    9. # 构造x,y轴刻度标签
    10. x_ticks_label = ["{}:00".format(i) for i in x]
    11. # y_ticks = range(40)
    12. # 刻度显示
    13. axes[0].set_xticks(x[::2])
    14. # axes[0].set_yticks(y_ticks[::5])
    15. axes[0].set_xticklabels(x_ticks_label[::2])
    16. axes[1].set_xticks(x[::2])
    17. # axes[1].set_yticks(y_ticks[::5])
    18. axes[1].set_xticklabels(x_ticks_label[::2])
    19. # 添加网格显示
    20. axes[0].grid(True, linestyle="--", alpha=0.2)
    21. axes[1].grid(True, linestyle="-.", alpha=0.5)
    22. # 添加描述信息
    23. axes[0].set_xlabel("时间")
    24. axes[0].set_ylabel("温度")
    25. axes[0].set_title("24小时内樟树市温度变化图", fontsize=20)
    26. axes[1].set_xlabel("时间")
    27. axes[1].set_ylabel("温度")
    28. axes[1].set_title("24小时内赣州市温度变化图", fontsize=14)
    29. # 添加图例
    30. axes[0].legend(loc=0)
    31. axes[1].legend(loc=0)
    32. plt.savefig("./subplots.jpg") # 图像保存
    33. plt.show() # 图像显示

    输出结果

    六、绘制数学函数图像

    1. import numpy as np
    2. x = np.linspace(-10, 10, 1000)
    3. y = np.sin(x)
    4. plt.figure(figsize=(9, 3), dpi=100)
    5. plt.plot(x, y, color='y', linestyle='-.')
    6. plt.grid(linestyle='--')
    7. plt.show()

     结果如下

    matplotlib官网:https://matplotlib.org/stable/ 

    学习导航:http://xqnav.top/

  • 相关阅读:
    数据库——模式分解和关系范式的分解
    OS13 - Alarm概述和解析(1)
    Qt+ECharts开发笔记(一):ECharts介绍、下载和Qt调用ECharts基础柱状图Demo
    纯代谢冲上Nature不是幻想,蛋氨酸饮食可影响小鼠癌症预后,同样可影响人体代谢
    puppeteer的简单使用
    Mysql索引失效的几种情况总结
    Git相关知识(1)
    SpringBoot整合Activiti7——流程变量(五)
    【论文复现】DAE:《Annotating and Modeling Fine-grained Factuality in Summarization》
    PTA 7-68 Redemption
  • 原文地址:https://blog.csdn.net/qq_43874317/article/details/127973584