需求描述:画图对比观测值和预测值,绘制对比图及多张子图

绘制对比图

  • 示例代码

    import matplotlib.pyplot as plt
    import numpy as npobs_x_data = [20.61782455, 20.3446064, 20.33182907, 20.41394997, 20.42613411, 20.38294792, 20.29493904, 20.11700439, 19.44220352, 17.69989204, 16.50032616, 15.84687519, 14.43702602, 12.91092873, 11.64278507, 11.01664066, 10.34288025, 9.60017872, 8.91129875, 8.14001083]obs_y_data = [30.85092926, 30.41317368, 30.22782707, 29.81970787, 29.28694534, 29.19682884, 29.06859398, 29.03396034, 29.01906776, 29.49583817, 29.87446022, 30.07171631, 30.44148064, 30.78217125, 31.01222801, 31.08432961, 31.16893959, 31.26436996, 31.36372185, 31.45003319]pred_x_data = [20.61782455, 20.3446064, 20.33182907, 20.41394997, 20.42613411, 20.38294792, 20.29493904, 20.11700439, 19.44220352, 17.69989204, 16.50027275, 15.39491463, 14.33294296, 13.27159023, 12.1923933, 11.0963583, 10.00212288, 8.92199039, 7.85391903, 6.7955761]pred_y_data = [30.85092926, 30.41317368, 30.22782707, 29.81970787, 29.28694534, 29.19682884, 29.06859398, 29.03396034, 29.01906776, 29.49583817, 29.87576103, 30.21777916, 30.55349922, 30.88473892, 31.22133636, 31.54788208, 31.86850739, 32.18684769, 32.4966507, 32.79633331]plt.figure(figsize=(12, 7.5))
    plt.plot(obs_x_data, obs_y_data, 'ro', linestyle='solid',  label='ground truth')
    plt.plot(pred_x_data, pred_y_data, 'bx', linestyle='dashed', label='pred value')
    plt.xlim(5, 22)
    plt.ylim(28, 34)
    x_ticks = np.arange(5, 22, 1)
    y_ticks = np.arange(28, 34, 0.5)
    plt.xticks(x_ticks)
    plt.yticks(y_ticks)
    plt.ylabel('y position', fontsize=14)
    plt.xlabel('x position', fontsize=14)
    plt.legend(loc='upper right', ncol=1, fancybox=True, shadow=True)
    plt.title("trajectory comparison", fontsize=16)
    plt.legend()    # 显示图例
    plt.grid(True)  # 显示网格线
    plt.show()      # 显示图片
    
  • 如果想保存图片

    ...
    plt.savefig('/your/path/test.png')    # 将图片数据写入文件
    plt.show()              # 将图片数据发送到用户界面库以进行显示
    
  • 如果想画多张图片:比如多个目标targets + 多条轨迹trajectories

    for target in range(len(targets)):for index in range(len(trajectories)):plt.figure(figsize=(12, 7.5))...plt.plot()...plt.show()    # 注意在for循环外,for循环画多张图,循环结束后显示多张图片
    
  • 如果想给图片设置不同编号index和像素dpi

    for target in range(len(targets)):for index in range(len(trajectories)):plt.figure(figsize=(12, 7.5))...plt.plot()...# 设置不同图片编号和像素plt.savefig('your/path/test_{}.png'.format(index), dpi = 200)plt.show()
    

    matplotlib默认像素值是100,即如果输出8 x 6空间单位的图,那么就能提供8*100 x 6*100像素的图片文件

绘制多张子图

  • 方法1:plt.subplots

    import matplotlib.pyplot as pltobs_x_data = [20.61782455, 20.3446064, 20.33182907, 20.41394997, 20.42613411, 20.38294792, 20.29493904, 20.11700439, 19.44220352, 17.69989204,16.50032616, 15.84687519, 14.43702602, 12.91092873, 11.64278507, 11.01664066, 10.34288025, 9.60017872, 8.91129875, 8.14001083]obs_y_data = [30.85092926, 30.41317368, 30.22782707, 29.81970787, 29.28694534, 29.19682884, 29.06859398, 29.03396034, 29.01906776, 29.49583817,29.87446022, 30.07171631, 30.44148064, 30.78217125, 31.01222801, 31.08432961, 31.16893959, 31.26436996, 31.36372185, 31.45003319]pred_x_data = [20.61782455, 20.3446064, 20.33182907, 20.41394997, 20.42613411, 20.38294792, 20.29493904, 20.11700439, 19.44220352, 17.69989204,16.50027275, 15.39491463, 14.33294296, 13.27159023, 12.1923933, 11.0963583, 10.00212288, 8.92199039, 7.85391903, 6.7955761]pred_y_data = [30.85092926, 30.41317368, 30.22782707, 29.81970787, 29.28694534, 29.19682884, 29.06859398, 29.03396034, 29.01906776, 29.49583817,29.87576103, 30.21777916, 30.55349922, 30.88473892, 31.22133636, 31.54788208, 31.86850739, 32.18684769, 32.4966507, 32.79633331]target_num = 23             # 23个目标,需要画23张子图
    target_count = 0            # 目标计数
    ROW_NUM, COL_NUM = 3,3      # 每张图3 x 3 = 9张子图
    for plot_num in range(0, target_num, ROW_NUM * COL_NUM):figure, axis = plt.subplots(nrows=ROW_NUM, ncols=COL_NUM, sharex='all', sharey='all', figsize=(8, 5))   # 共享x轴和y轴;设置figure大小为 8 * 5sub_figure_index = []for i in range(axis.shape[0]):for j in range(axis.shape[1]):sub_figure_index.append(axis[i, j])for index in range(ROW_NUM * COL_NUM):if target_count == target_num:breaksub_figure_index[index].plot(obs_x_data, obs_y_data, 'bo', linestyle='solid', label='first')sub_figure_index[index].plot(pred_x_data, pred_y_data, 'r*', linestyle='dashed', label='second')sub_figure_index[index].grid(True)sub_figure_index[index].legend(loc='upper right')target_count += 1plt.tight_layout()# plt.savefig('your/path/figure_{}.png'.format(plot_num / (ROW_NUM * COL_NUM)), dpi=200)plt.show()
    
  • 方法2:plt.subplot

    import matplotlib.pyplot as plt
    import numpy as np# plot 1:
    x = np.array([0, 6])
    y = np.array([0, 100])plt.subplot(2, 2, 1)
    plt.plot(x,y)
    plt.title("subplot 1")# plot 2:
    x = np.linspace(0, 2*np.pi, 400)
    y = np.sin(x**2)plt.subplot(2, 2, 2)
    plt.plot(x,y)
    plt.title("subplot 2")# plot 3:
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = np.array([3, 5, 7, 9, 12, 10, 8, 6])plt.subplot(2, 2, 3)
    plt.scatter(x,y)
    plt.title("subplot 3")# plot 4:
    x = np.array([1, 2, 3, 4])
    y = np.array([7, 6, 5, 4])plt.subplot(2, 2, 4)
    plt.plot(x,y)
    plt.title("subplot 4")plt.suptitle("multi subplot test")
    plt.show()
    
  • 绘制极坐标图可用:fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection=“polar”))

参考文章:
matplotlib可视化
matplotlib存储多张图片
savefig()函数的参数使用
绘制多张子图
一张图中画多个数据
matplotlib设置图例
for循环每次循环画一个图
matplotlib绘制多个子图
设置子图大小

created by shuaixio, 2022.06.19

【python】python matplotlib绘制并保存多张图片+绘制多张子图相关推荐

  1. python使用matplotlib的savefig保存时图片保存不完整的问题

    参考文章,算是转载的吧:https://www.cnblogs.com/hellovan/p/10135813.html 1.今天使用matplotlib来画横向水平柱状图的时候,发现使用matplo ...

  2. 【Python】Matplotlib画布图案保存为PDF文件

    原图Link 这里选择两个绘过的图组合起来,生成两页的PDF文件,原图Link: Matplotlib绘制带颜色标尺的彩色曲面 Matplotlib绘制三维马鞍面 Matplotlib编程实现 imp ...

  3. Python 之 Matplotlib xticks 的再次说明、图形样式和子图

    文章目录 一. 改变 x 轴显示内容 xticks 方法再次说明 1. x 轴是数值型数据 2. 将 x 轴更改为字符串 3. 总结 二. 其他元素可视性 1. 显示网格:plt.grid() 2. ...

  4. python保存图片不完整_python使用matplotlib的savefig保存时图片保存不完整的问题

    python使用matplotlib的savefig保存时图片保存不完整的问题 使用如下形式的代码进行图片保存时,保存的图片出现不完整的情况,如图1所示. plt.colorbar() plt.sav ...

  5. python的matplotlib绘图(双坐标轴)

    python的matplotlib绘图(双坐标轴) 绘制图形如下: 代码如下: import pandas as pd import matplotlib.pyplot as plt from pyl ...

  6. Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)

    Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background) 目录

  7. 【数据处理】python使用matplotlib如何绘制动图;如何使用python进行动图gif制作;实时绘制动态图

    一.现有的集成工具 绘制动图可以用一些现有的集成库,但是很麻烦,你需要调整和他们一样的参数和格式,定制化程度比较低,还得再去搞懂它们的东西.比如这些现有的: https://github.com/Ja ...

  8. python画图三维-Python使用matplotlib绘制三维图形示例

    本文实例讲述了Python使用matplotlib绘制三维图形.分享给大家供大家参考,具体如下: 用二维泡泡图表示三维数据 泡泡的坐标2维,泡泡的大小三维,使用到的函数 plt.scatter(P[: ...

  9. python代码示例图形-Python使用matplotlib绘制三维图形示例

    本文实例讲述了Python使用matplotlib绘制三维图形.分享给大家供大家参考,具体如下: 用二维泡泡图表示三维数据 泡泡的坐标2维,泡泡的大小三维,使用到的函数 plt.scatter(P[: ...

最新文章

  1. R语言ggplot2可视化在可视化图像中添加上限线条、下限线条、添加上下限图例实战
  2. python中给出一个不超过10的正整数n_求计算机大佬解答python题
  3. 多元经验模态分解_【Applied Energy最新原创论文】一个基于多元搜索引擎数据的多尺度油价预测方法...
  4. 从零入门 Serverless | 架构的演进
  5. UE4材质:只在石头缝中刷草
  6. 学会拐弯,才是人生大智慧(深度好文)
  7. javascript的关于刷新页面给出提示框的代码
  8. 【Leetcode | 01】Backtracking
  9. 腾讯云鼎实验室发布云安全攻防矩阵,绘制九大攻防路径全景图
  10. 【ubuntu操作系统入门】系统安装
  11. java中alt_eclipse中alt+/的作用
  12. 父子id mysql,一道关于数据库(经典父子级 ID 关联)更新题
  13. 【C#】字体增大、减小、改变颜色
  14. 经典测试用例,一个水杯的测试
  15. x265各个preset对比
  16. Selenium 与(Firefox、GeckoDriver)和(Chrome、ChromeDriver)版本对应关系
  17. CentOS7安装MariaDB的流程步骤
  18. 无监控、不运维。运维系统架构设计附带思维导图
  19. Leetcode 953:验证外星语词典(超详细的解法!!!)
  20. R语言中实现线性回归+l_0范数变量选择的包abess

热门文章

  1. 打开idea的svn项目弹出Action not found:Subversion.Add提示解决办法
  2. Android 银行卡快捷支付
  3. python读写csv文件方法总结_使用python读写CSV文件的三种方法
  4. JVM_虚拟机执行子系统
  5. Python廖雪峰教程学习笔记:Day4
  6. [软件工程]交换编程方法的深入讨论
  7. /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found的解决办法及注意事项
  8. Django——admin功能、注册模型类、模型管理类
  9. Expo大作战(二十八)--expo sdk api之Speach(语音文字转换),Segment
  10. JSElectron使用speechSynthesis进行语音合成