Matplotlib设置figsize后多图异常拆分问题求助
解决Matplotlib多文件同图绘制的问题
嘿,这个问题我之前也踩过坑!核心原因是你把创建图表的代码plt.figure()放到循环里面了——每循环一次就新建一个画布,自然就会生成5个独立的图表,而不是把所有曲线叠加在同一个图里。
下面是修正后的完整思路和代码示例:
关键思路
- 提前创建单个画布和轴对象:把图表初始化的代码放在循环外面,确保所有绘图操作都在同一个轴上进行。
- 先绘制参考曲线:单独画出A_B_0的曲线,方便后续对比。
- 循环遍历关联文件:在同一个轴上依次绘制每个关联文件的曲线,用不同样式区分。
- 添加必要的图表元素:比如图例、轴标签、标题,让图表更清晰。
示例代码(假设用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
相关产品推荐
相关产品推荐

