Python Pandas DataFrame.plot重置pyplot当前图形
我试图使用pandas来绘制特定的图形,但它似乎想制作自己的图形,而不是使用/重置pyplot的当前图形 我怎样才能使pandas绘图到当前(或者更好,并明确给出)的图形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
解决办法很简单。可以指定绘图需要参照的轴对象。这可以通过从
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))
。