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

如何让Matplotlib中DataFrame绘图使用当前坐标轴避免多图

问题解决:避免pandas绘图生成多个图形

问题原因

你遇到的两个图形(一个空白、一个带数据)是因为两次创建了绘图容器:

  • 调用plt.gca()时,若当前无已创建的图形,matplotlib会自动生成一个空白的Figure和Axes对象。
  • 随后df.plot('x', 'y', kind='scatter')默认会新建一个Figure来绘制散点图,最终导致两个图形被生成。

另外注意代码里的拼写错误:matplotlib.pylot应改为matplotlib.pyplot,否则会引发导入错误。


解决方案:指定绘图的Axes对象

让df.plot()在已有的Axes上绘图,而不是新建Figure,有两种实现方式:

方式1:复用plt.gca()获取的Axes

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("csvFile.csv")
print(df) # 校验数据,查看x、y、lbl列内容

# 获取当前Axes(无则创建)
ax = plt.gca()
# 指定在已有Axes上绘制散点图
df.plot('x', 'y', kind='scatter', ax=ax)

numberOfFigures = plt.getfignums()
print(numberOfFigures) # 现在会输出[1],仅一个图形

# 其他填充、图例等代码
plt.show()

方式2:手动创建Figure和Axes(更推荐)

直接创建绘图容器,再传给df.plot(),逻辑更清晰:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("csvFile.csv")
print(df)

# 手动创建Figure和Axes对象
fig, ax = plt.subplots()
# 在指定的Axes上绘图
df.plot('x', 'y', kind='scatter', ax=ax)

numberOfFigures = plt.getfignums()
print(numberOfFigures) # 输出[1]

# 其他代码
plt.show()

内容的提问来源于stack exchange,提问作者James-Jesse Drinkard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:13:27