参考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




