Python Pandas DataFrame.plot重置pyplot当前图形

Python Pandas DataFrame.plot重置pyplot当前图形,python,pandas,matplotlib,dataframe,Python,Pandas,Matplotlib,Dataframe,我试图使用pandas来绘制特定的图形,但它似乎想制作自己的图形,而不是使用/重置pyplot的当前图形 我怎样才能使pandas绘图到当前(或者更好,并明确给出)的图形 解决办法很简单。可以指定绘图需要参照的轴对象。这可以通过从ax=pyplot.gca()获取当前句柄,然后打印到此句柄来完成。当然,您也可以使用类似的语法打印到另一个句柄 from matplotlib import pyplot import pandas df = pandas.DataFrame({'a':list(r

我试图使用pandas来绘制特定的图形,但它似乎想制作自己的图形,而不是使用/重置pyplot的当前图形

我怎样才能使pandas绘图到当前(或者更好,并明确给出)的图形


解决办法很简单。可以指定绘图需要参照的轴对象。这可以通过从
ax=pyplot.gca()
获取当前句柄,然后打印到此句柄来完成。当然,您也可以使用类似的语法打印到另一个句柄

from matplotlib import pyplot
import pandas

df = pandas.DataFrame({'a':list(range(1000))})
fig1 = pyplot.figure(figsize=(5, 10))
ax = pyplot.gca()
assert pyplot.gcf() is fig1 # succeeds
df.plot(ax=ax) # draws to fig1 now
assert pyplot.gcf() is fig1 # Succeeds now, too

解决办法很简单。可以指定绘图需要参照的轴对象。这可以通过从
ax=pyplot.gca()
获取当前句柄,然后打印到此句柄来完成。当然,您也可以使用类似的语法打印到另一个句柄

from matplotlib import pyplot
import pandas

df = pandas.DataFrame({'a':list(range(1000))})
fig1 = pyplot.figure(figsize=(5, 10))
ax = pyplot.gca()
assert pyplot.gcf() is fig1 # succeeds
df.plot(ax=ax) # draws to fig1 now
assert pyplot.gcf() is fig1 # Succeeds now, too

不完全是您的问题,但可以通过不同的机制解决您的需求:

如果您只想设置地物大小,可以将
pyplot
kwargs传递到
df.plot

df.plot(figsize=(5, 10))
pyplot.show()

不完全是您的问题,但可以通过不同的机制解决您的需求:

如果您只想设置地物大小,可以将
pyplot
kwargs传递到
df.plot

df.plot(figsize=(5, 10))
pyplot.show()

df=pandas.DataFrame(范围(1000))
结果为:回溯(最近一次调用最后一次):。。。ValueError:未正确调用数据帧构造函数!DataFrame构造函数在我的Pandas(0.19.2)上运行良好。我正在使用Pandas 0.20.3。。。因此,我认为这将是未来的常见情况。但是如果这是一个大问题,我会从答案中删除它,因为它与解决方案无关。是的,与问题无关,我只需要一些样本数据。我更新了这个问题,以使用您的构造函数来避免任何混淆。最后一点是关于将
range
提供给
DataFrame
。这更像是使用Python3和Python2的问题。在Python3中,您需要首先转换为list,
pd.DataFrame(list(range(1000))
df=pandas.DataFrame(range(1000))
结果是:回溯(最近的调用最后一次):。。。ValueError:未正确调用数据帧构造函数!DataFrame构造函数在我的Pandas(0.19.2)上运行良好。我正在使用Pandas 0.20.3。。。因此,我认为这将是未来的常见情况。但是如果这是一个大问题,我会从答案中删除它,因为它与解决方案无关。是的,与问题无关,我只需要一些样本数据。我更新了这个问题,以使用您的构造函数来避免任何混淆。最后一点是关于将
range
提供给
DataFrame
。这更像是使用Python3和Python2的问题。在Python3中,您需要首先转换为list,
pd.DataFrame(list(范围(1000))