当前位置: 首页 > article >正文

python可视化将多张图整合到一起(画布)

        这周有点事忙着,没时间重温刚结束的Mathurcup数学建模,这两天也是再看了下,论文还是赶紧挺烂的,但比国赛又有进步(说起国赛又不得不抱怨了,基本其余省份都发了,但江西......哎)。哎,数模就是这样,想起刚接触数模,也是参加了Mathurcup,结果。。。

        咳咳,跑偏了,就这次Mathurcup而言,还是感觉到了有些乏力,毕竟平常也都不会去专门看数模,都是比赛的时候临时学,有些模型、方法还是很生。但熬了这么久,也算学到了点啥,对于我来说,我是敲代码的,思路方面不用我操心,理解他思路就行,但代码方面,我印象很深刻的就是学会了用画布,之前参考优秀论文的时候经常能看见这种图,一张图中有很多子图。类似下面这种:

        其实实现也蛮简单的,下面是一个例子,也是本次Mathurcup的数据处理某个环节,具体注释也给了:

import matplotlib.pyplot as plt
import pandas as pd

i = 1
# 创建包含 8 个子图的图布
fig, axs = plt.subplots(4, 2, figsize=(12, 8))  #可调整
# 因为要为每个子图进行相同的绘图操作,可以使用 flatten() 将其转换为一维数组
axs = axs.flatten()

# 遍历文件夹中的所有文件
for j in range(140,281, 20):
    file_path = f"D:\\OneDrive\\桌面\\2024Mathurcup\\附件二处理后数据\\category{j}.xlsx"
    # 读取文件
    df = pd.read_excel(file_path)
    # 取数据
    x_axis_data = df['日期']
    y_axis_data = df['销量']
    # 后面子图名称
    line_name = f"category{j}"
    axs[i - 1].plot(x_axis_data, y_axis_data, 'b*--', alpha=0.5, linewidth=1, label=line_name)  # 绘制曲线
    axs[i - 1].legend(loc='upper right', bbox_to_anchor=(1.05, 1), borderaxespad=0.)

    # 设置 X 轴刻度
    axs[i - 1].xaxis.set_major_locator(plt.MaxNLocator(nbins=5))
    # 设置x轴、y轴
    axs[i - 1].set_xlabel('日期', fontdict={"family": "KaiTi", "size": 15, "color": "b"})
    axs[i - 1].set_ylabel('销量', fontdict={"family": "KaiTi", "size": 15, "color": "b"})
    i += 1
# 自动调整子图参数,确保子图之间以及子图和标签之间的间距合理,避免重叠,从而使得图像布局更加整洁和美观。
plt.tight_layout()
plt.savefig("D:/picture_1.png")
plt.show()

运行结果如下,向这种就适合那些数据文件很多的抽样展示:

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。看啥。没有了,学习去!


http://www.kler.cn/a/387584.html

相关文章:

  • 【循环神经网络】
  • 设备接入到NVR管理平台EasyNVR多品牌NVR管理工具/设备的音视频配置参考
  • 论文分享:DiskANN查询算法
  • Arrays.sort与Collections.sort:深入解析Java中的排序算法
  • Mysql前言
  • 介绍和安装及数据类型
  • 三次权重函数
  • web——sqliabs靶场——第二关
  • 基于SpringCloud+Vue的社区服务系统 (含源码数据库)
  • 【AI】【提高认知】卷积神经网络:深度学习与计算机视觉的核心驱动力
  • HTTP 和 HTTPS 的区别 - 2024最新版前端秋招面试短期突击面试题【100道】
  • Linux内核.之 init文件,/init/main.c
  • Kylin Server V10 下自动安装并配置Kafka
  • 在docker里创建 bridge 网络联通不同容器
  • 旧衣回收小程序:提高回收效率,扩大服务范围
  • 【SpringBoot】使用注解进行XSS防御
  • 股民情绪识别的LSTM-NBM混合模型
  • Java 泛型详解:参数化类型的强大之处
  • 数字乡村建设方案-5
  • IntelliJ IDEA的快捷键
  • python基础知识及其应用
  • 【抽取数据简单方式】spark实现hive中数据抽取到MySQL
  • 「QT」几何数据类 之 QRectF 浮点型矩形类
  • ORACLE 闪回技术简介
  • 基于promtail+loki+grafana搭建日志系统
  • 【WRF运行报错】segmentation fault (SIGSEGV) 错误原因总结