使用matplotlib'保存python熊猫生成的绘图(AxesSubPlot);s savefig
我正在使用pandas从数据帧生成绘图,我希望将其保存到文件:使用matplotlib'保存python熊猫生成的绘图(AxesSubPlot);s savefig,python,matplotlib,pandas,Python,Matplotlib,Pandas,我正在使用pandas从数据帧生成绘图,我希望将其保存到文件: dtf = pd.DataFrame.from_records(d,columns=h) fig = plt.figure() ax = dtf2.plot() ax = fig.add_subplot(ax) fig.savefig('~/Documents/output.png') 似乎最后一行,使用matplotlib的savefig,应该可以做到这一点。但该代码会产生以下错误: Traceback (most recent
dtf = pd.DataFrame.from_records(d,columns=h)
fig = plt.figure()
ax = dtf2.plot()
ax = fig.add_subplot(ax)
fig.savefig('~/Documents/output.png')
似乎最后一行,使用matplotlib的savefig,应该可以做到这一点。但该代码会产生以下错误:
Traceback (most recent call last):
File "./testgraph.py", line 76, in <module>
ax = fig.add_subplot(ax)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 890, in add_subplot
assert(a.get_figure() is self)
AssertionError
编辑2:
下面的代码也可以正常工作
dtf2.plot().get_figure().savefig('output.png')
因此,我不完全确定为什么会这样,但它会用我的绘图保存图像:
dtf = pd.DataFrame.from_records(d,columns=h)
dtf2.plot()
fig = plt.gcf()
fig.savefig('output.png')
我猜我的原始帖子的最后一个片段保存为空白,因为该图从未获得熊猫生成的轴。使用上面的代码,通过gcf()调用(获取当前图形)从某种神奇的全局状态返回figure对象,该调用会自动烘焙上面一行中绘制的轴。gcf方法在V0.14中被去除,下面的代码适用于我:
plot = dtf.plot()
fig = plot.get_figure()
fig.savefig("output.png")
在
plot()
函数之后使用plt.savefig()
函数对我来说似乎很容易:
import matplotlib.pyplot as plt
dtf = pd.DataFrame.from_records(d,columns=h)
dtf.plot()
plt.savefig('~/Documents/output.png')
这可能是一种更简单的方法: (DesiredFigure.get_figure().savefig('figure_name.png')) i、 e
您可以使用
ax.figure.savefig()
,如问题注释所示:
将熊猫作为pd导入
df=pd.DataFrame([0,1])
ax=df.plot.line()
ax.figure.savefig('demo-file.pdf')
与其他答案中建议的ax.get_figure().savefig()相比,这没有任何实际好处,因此您可以选择最美观的选项。事实上:
#来源于上面链接的代码片段
def get_图(自身):
“”“返回艺术家所属的`.Figure`实例。”“”
回归自我形象
- 其他答案涉及将绘图保存为单个绘图,而不是子绘图
- 如果存在子批次,绘图API将返回的
numpy.ndarray
将熊猫作为pd导入
将seaborn作为sns导入样本数据
将matplotlib.pyplot作为plt导入
#加载数据
df=sns.load_数据集('iris')
#显示(df.head())
萼片长萼片宽花瓣长花瓣宽种
0.5.1 3.5 1.4 0.2刚毛
1 4.9 3.0 1.4 0.2刚毛
2 4.7 3.2 1.3 0.2刚毛
3.4.6 3.1 1.5 0.2刚毛
4.5.0 3.6 1.4 0.2刚毛
密谋
- 下面的示例使用了
,但在指定kind='hist'
以外的内容时是相同的解决方案'hist'
- 使用
从数组中获取一个[0]
,并使用轴
提取图形.get\u figure()
fig=df.plot(kind='hist',subplot=True,figsize=(6,6))[0].get_figure()
plt.紧_布局()
图savefig('test.png'))
密谋
1:
- 在本例中,我们将
分配给使用df.hist
创建的plt.subplot
,并保存该Axes
fig
和4
分别用于1
和nrows
,但也可以使用其他配置,如ncol
和2
2
fig,ax=plt.子批次(nrows=4,ncols=1,figsize=(6,6))
df.hist(ax=ax)
plt.紧_布局()
图savefig('test.png'))
2:
- 使用
展平.ravel()
轴阵列
fig=df.hist().ravel()[0]。获取图()
plt.紧_布局()
图savefig('test.png'))
能否请您用一个例子补充一些解释?如果您在同一个函数中创建多个图形,则这不起作用(但在jupyter笔记本电脑单元中有效)。
plot = dtf.plot()
fig = plot.get_figure()
fig.savefig("output.png")
import matplotlib.pyplot as plt
dtf = pd.DataFrame.from_records(d,columns=h)
dtf.plot()
plt.savefig('~/Documents/output.png')
dfcorr.hist(bins=50).get_figure().savefig('correlation_histogram.png')