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

Python Pandas 无表头DataFrame调用plot()绘制折线图咨询

实现方法

基础折线图绘制

你原有代码存在两个语法/参数错误:

  • df.plot()的x、y参数接收列名或列名列表,不支持直接传入切片得到的数组,且[0:346,1:49]不是合法的Python切片写法
  • 日期列未做类型转换、也未指定为绘图轴,容易出现x轴格式错乱问题

先做基础数据预处理,再绘图即可:

import pandas as pd
import matplotlib.pyplot as plt

# 列重命名:第一列为日期列,后续48列按1-48命名,和你的数据结构匹配
df.columns = ['date'] + list(range(1, 49))
# 把日期列转为标准时间格式
df['date'] = pd.to_datetime(df['date'])

# 最简写法:将日期列设为索引,pandas会自动把索引作为x轴,所有数值列绘制为折线
df_set = df.set_index('date')
df_set.plot(kind='line', figsize=(12, 6))
plt.tight_layout()
plt.show()

# 不设索引的写法:手动指定x轴列和要绘制的y轴列
df.plot(x='date', y=list(range(1, 49)), kind='line', figsize=(12, 6))
plt.show()

不需要手动传入行切片,只要传入的DataFrame是你需要绘制的全量346行数据,pandas会自动遍历所有行绘图。

多坐标轴配置支持

pandas原生支持双y轴配置,3个及以上y轴可以结合matplotlib的轴对象手动实现:

  • 双y轴示例:将前24列放在左轴,后24列放在右次轴
ax = df[list(range(1,25))].plot(figsize=(12,6))
# 传入已有轴对象,指定secondary_y=True即可将曲线绘制在次坐标轴
df[list(range(25,49))].plot(ax=ax, secondary_y=True)
plt.tight_layout()
plt.show()
  • 3个及以上y轴示例:手动创建偏移坐标轴避免重叠
fig, ax = plt.subplots(figsize=(12,6))
# 调整画布右侧边距,给多出来的轴预留显示空间
fig.subplots_adjust(right=0.8)

# 第一个轴(默认左侧)绘制1-16列
df[list(range(1,17))].plot(ax=ax)
ax.set_ylabel('1-16列数值')

# 第二个轴(右侧第一个位置)绘制17-32列
ax2 = ax.twinx()
df[list(range(17,33))].plot(ax=ax2, colormap='Set2')
ax2.set_ylabel('17-32列数值')

# 第三个轴(右侧偏移位置)绘制33-48列
ax3 = ax.twinx()
df[list(range(33,49))].plot(ax=ax3, colormap='Set3')
ax3.set_ylabel('33-48列数值')
# 将第三个轴向右偏移8%的画布宽度,避免和第二个轴重叠
ax3.spines.right.set_position(("axes", 1.08))

plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:09:20