【问题标题】:save dataframe.hist() to a file [duplicate]将 dataframe.hist() 保存到文件中[重复]
【发布时间】:2015-10-14 06:33:56
【问题描述】:

我正在尝试创建数据框直方图并将其保存为文件。

这是我的代码:

ax=df.hist('ColumnName')
fig=ax.get_figure()
fig.savefig('pictureName.png', dpi=100, bbox_inches='tight')

第一行工作正常;但是,第二行返回错误: AttributeError:“numpy.ndarray”对象没有属性“get_figure”。

因为this question 显示get_figure() 被应用到series.hist(),我也尝试使用ax=df['ColumnName'].hist(),它成功地生成了一个直方图,但是当我尝试实现get_figure() 时导致了同样的错误信息.

按照this other question 的建议,通常我会跳过 get_figure() 和 fig.savefig(),而是选择 plt.savefig,但我正在制作多个数字。根据我的经验, plt.savefig() 在保存多个数字时是不可靠的,而是多次保存一个数字,即使我在每次创建和保存后使用 fig.close() 也是如此。

我非常想尽可能简洁地解决这个问题,这样我就可以顺利地将解决方案带到其他应用程序中,而不必每次制作图表时都使用不同的胶带修复。

感谢您的帮助!

【问题讨论】:

    标签: python pandas numpy matplotlib


    【解决方案1】:

    你能试试下面的代码吗?

    import pandas as pd
    import matplotlib.pyplot as plt
    
    fig, ax = plt.subplots()
    df.hist('ColumnName', ax=ax)
    fig.savefig('example.png')
    

    【讨论】:

    • 效果很好,谢谢!你能解释一下为什么吗?每次我想保存单个图表时都必须使用 plt.subplots() 似乎是多余的。我也很想知道为什么 get_figure() 在我的上下文中不起作用。
    • @user36869 fig, ax 在您调用 plt.subplots() 时成对创建。或者,仅根据您看到的具体错误,ax 对象在numpy.array 内,您也可以使用fig=ax[0][0].get_figure() 返回figure 对象。当您将多个子图放在一个大图中时,这两个维度保留给nrowsncols
    • 如果没有 $DISPLAY 可用,您需要在前面加上 import matplotlibmatplotlib.use('Agg')(必须出现在 pyplot 导入和可能的 pandas 导入之前)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 2013-10-27
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2019-12-25
    相关资源
    最近更新 更多