You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

参考Pydata2019教程:Pandas多列绘图为何生成单图?

解决Pandas多列绘图生成独立图表的问题

嘿,这个问题我太熟了!你遇到的情况几乎可以肯定是没用到Pandas绘图里的关键参数,或者没正确创建独立的绘图容器。我给你拆解两种最常用的解决方法:

方法1:用Pandas自带的subplots=True快速拆分

Pandas的plot()方法默认会把所有列的内容叠在同一个图表里,只要加上subplots=True参数,就能让每一列自动生成单独的子图:

import pandas as pd
import matplotlib.pyplot as plt

# 模拟你的数据结构
df = pd.DataFrame({
    'temp': [22, 25, 23, 27],
    'humidity': [60, 55, 65, 50],
    'pressure': [1013, 1012, 1015, 1011]
})

# 核心就是这个subplots=True
df.plot(subplots=True, figsize=(8, 7))
plt.tight_layout()  # 自动调整子图间距,避免标题、标签重叠
plt.show()

方法2:手动创建Matplotlib子图,更灵活控制

如果需要自定义子图的布局(比如横向排列、调整每个图的样式),可以手动创建plt.subplots()对象,然后指定每一列画在哪个子图上:

# 创建3行1列的子图布局
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(8, 7))

# 逐列指定绘图的坐标轴
df['temp'].plot(ax=axes[0], title='Temperature', color='orange')
df['humidity'].plot(ax=axes[1], title='Humidity', color='blue')
df['pressure'].plot(ax=axes[2], title='Atmospheric Pressure', color='green')

plt.tight_layout()
plt.show()

为什么教程里能生成独立图表?

你提到的Pydata 2019教程23:40处,讲师应该就是用了subplots=True这个参数——这是Pandas绘图里快速拆分多列到独立图表的核心开关。如果没加这个参数,Pandas就会默认把所有列的线条/数据都绘制在同一个坐标轴上。

另外,也有可能讲师在每次绘图前用plt.figure()创建了新的画布,但这种方法不如subplots高效,尤其是列数多的时候。

如果还是有问题,可以检查下你的Pandas版本(建议0.20及以上,subplots参数在这个版本后就稳定支持了),或者把你的代码片段贴出来,我可以帮你再排查!


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

火山引擎 最新活动