You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib设置figsize后多图异常拆分问题求助

解决Matplotlib多文件同图绘制的问题

嘿,这个问题我之前也踩过坑!核心原因是你把创建图表的代码plt.figure()放到循环里面了——每循环一次就新建一个画布,自然就会生成5个独立的图表,而不是把所有曲线叠加在同一个图里。

下面是修正后的完整思路和代码示例:

关键思路

  1. 提前创建单个画布和轴对象:把图表初始化的代码放在循环外面,确保所有绘图操作都在同一个轴上进行。
  2. 先绘制参考曲线:单独画出A_B_0的曲线,方便后续对比。
  3. 循环遍历关联文件:在同一个轴上依次绘制每个关联文件的曲线,用不同样式区分。
  4. 添加必要的图表元素:比如图例、轴标签、标题,让图表更清晰。

示例代码(假设用Pandas读取数据)

import matplotlib.pyplot as plt
import pandas as pd

# 1. 初始化单个图表,设置尺寸
fig, ax = plt.subplots(figsize=(12, 7))  # 这里用subplots更方便获取轴对象

# 2. 读取并绘制参考文件A_B_0
# 替换成你实际的数据读取方式(比如numpy.loadtxt、open读取等)
df_reference = pd.read_csv("A_B_0.csv")
# 给参考曲线设置更显眼的样式,比如加粗黑色线
ax.plot(df_reference["X"], df_reference["Y"], label="A_B_0", color="black", linewidth=2.5)

# 3. 循环处理A_B_1到A_B_5
for file_num in range(1, 6):
    filename = f"A_B_{file_num}.csv"
    df = pd.read_csv(filename)
    # 每个关联文件用不同的线型/颜色,方便区分
    ax.plot(df["X"], df["Y"], label=f"A_B_{file_num}", linestyle="--", alpha=0.8)

# 4. 完善图表细节
ax.set_xlabel("X轴名称", fontsize=12)
ax.set_ylabel("Y轴数值", fontsize=12)
ax.set_title("参考文件与关联数据对比", fontsize=14, pad=15)
ax.legend(fontsize=10)  # 显示图例,区分不同曲线
ax.grid(alpha=0.3)  # 可选:添加网格线,提升可读性

# 5. 展示或保存图表
plt.show()
# 如果需要保存,用 plt.savefig("comparison_plot.png", dpi=300)

额外注意事项

  • 如果不同文件的Y轴数值范围差异极大,导致部分曲线被压缩看不清,可以考虑使用双Y轴(ax.twinx())或者调整Y轴范围(ax.set_ylim(min_val, max_val))。
  • 确保所有文件的X轴数据完全一致,否则曲线会错位。如果X轴数据有偏差,可以考虑对齐后再绘制。

内容的提问来源于stack exchange,提问作者Hrihaan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:31:57