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

如何使用pandas在同比例坐标轴的同图中绘制不同列的数值曲线

实现方案

1. 等长DataFrame绘图

要求用pandas实现且共用坐标轴刻度,最优方式是先对齐两个DataFrame的时间轴再绘图,具体代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 构造参考数据
data1 = {'time': [0.973841, 1.000934, 1.027918, 1.055180, 1.082246],
        'value1': [0.483, 0.494, 0.468, 0.477, 0.460]}
data2 = {'time': [0.779984, 0.801439, 0.823164, 0.844759, 0.866461],
        'value2': [0.027, 0.036, 0.030, 0.030, 0.035]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 外连接合并两个表,对齐时间轴
merged_df = pd.merge(df1, df2, on='time', how='outer')
# 设置time为索引,直接调用pandas plot方法
merged_df.set_index('time').plot()
plt.show()

上述代码自动使用相同坐标轴刻度,两条曲线分别对应value1和value2。

2. 不等长DataFrame绘图

不需要额外适配长度差异,沿用上面的外连接合并逻辑即可,缺失值绘图时会自动忽略,具体代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 构造不等长参考数据
data1 = {'time': [0.973841, 1.000934, 1.027918, 1.055180, 1.082246],
        'value1': [0.483, 0.494, 0.468, 0.477, 0.460]}
data3 = {'time': [0.779984, 0.801439, 0.823164, 0.844759, 0.866461, 1.0, 2.0],
        'value3': [0.027, 0.036, 0.030, 0.030, 0.035, 0.04, 0.045]}
df1 = pd.DataFrame(data1)
df3 = pd.DataFrame(data3)

# 同样使用外连接合并,自动对齐所有时间点
merged_df = pd.merge(df1, df3, on='time', how='outer')
merged_df.set_index('time').plot()
plt.show()

该方案不管参与绘图的DataFrame长度是否一致都通用,合并后所有曲线共用同一套坐标轴刻度,不需要手动调整刻度。

关键说明

  • 合并时使用how='outer'是为了保留所有输入表的时间点,不会截断任何曲线的有效数据
  • pandas的DataFrame.plot()方法默认所有列共享同一套坐标轴,刻度比例自动统一,无需手动配置
  • 合并产生的空值(NaN)在绘图时会被自动跳过,不会影响曲线的连续性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:57:02