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

Python中如何将多个DataFrame绘制到同一张折线图(解决循环绘图异常)

解决多DataFrame同图折线绘制问题

先提个你代码里的细节:定义的变量是K1,但plot时写的是k1(大小写不一致),这会直接报错。不过你说循环里能显示L1和K1,估计实际代码里变量名是统一的,核心问题是循环时没正确遍历所有要绘制的DataFrame。

给你两种实用的解决方法:

方法1:用列表统一管理,循环绘制

把固定数据和所有用户输入的DataFrame放进一个列表,不管用户输入多少个,都能一次性遍历绘制:

import pandas as pd
import matplotlib.pyplot as plt

# 固定数据
L1 = pd.DataFrame([20,19,18,17,16,15])
# 用户输入的数据
K1 = pd.DataFrame([15,14,13,11,18,21])
k2 = pd.DataFrame([10,15,16,21,22,25])

# 把所有要绘制的DataFrame统一放进列表
all_dfs = [L1, K1, k2]

fig, ax = plt.subplots()
# 循环遍历每个DataFrame,绘制到同一个坐标轴上
for idx, df in enumerate(all_dfs):
    # 给每条线加标签,方便图例区分
    ax.plot(df[0], label=f'数据{idx+1}')

# 显示图例
ax.legend()
# 保存图片(注意先定义Path,比如Path = './')
plt.savefig(Path + "abc.png")
plt.show()

方法2:合并DataFrame后直接绘制(更简洁)

用pandas的concat把多个同长度的DataFrame按列合并,然后直接调用plot方法,pandas会自动把每列画成一条折线:

import pandas as pd
import matplotlib.pyplot as plt

L1 = pd.DataFrame([20,19,18,17,16,15])
K1 = pd.DataFrame([15,14,13,11,18,21])
k2 = pd.DataFrame([10,15,16,21,22,25])

# 合并DataFrame,自定义列名方便区分每条线
combined_df = pd.concat([L1, K1, k2], axis=1)
combined_df.columns = ['固定数据', '用户输入1', '用户输入2']

# 直接绘制,自动生成图例
combined_df.plot()
plt.savefig(Path + "abc.png")
plt.show()

这两种方法都能确保所有DataFrame的数据都被绘制出来,不会出现循环遗漏的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:42:32