gpt4 book ai didi

python - 如何将 sns.facetgrid 保存为 pdf

转载 作者:行者123 更新时间:2023-12-04 09:22:30 26 4
gpt4 key购买 nike

我有一个如下所示的数据框:

import pandas as pd
foo = pd.DataFrame({'occasions': ['a', 'a', 'b', 'b'], 'val':[1,1,1,2]})

我正在尝试像这样使用 seaborn 创建一个带有分面的直方图,我想将该图像保存为 pdf,所以我这样做:

import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

pdf = PdfPages('exploration.pdf')
g = sns.FacetGrid(foo, col="occasions", margin_titles=True)
g.map(plt.hist,'val', color="steelblue")
g.set_titles(col_template = '{col_name}')
g.fig.suptitle('title')
plot_fig(g, pdf)

在哪里

def plot_fig(plot, pdf):
try:
fig = plot.draw()
except:
fig = plot
pdf.savefig(fig, height=10, width=18, dpi=500, bbox_inches='tight', pad_inches=0.5)
plt.close()

但我得到一个错误:ValueError: No figure <seaborn.axisgrid.FacetGrid object at 0x7f1ca2300780> ,有什么想法可以解决这个问题吗?

最佳答案

我不知道你的 PdfPages('exploration.pdf') 文件是什么样子的,因此我不能确定它是否有效,但一般来说保存数字应该像这样工作:

def plot_fig(plot, pdf):
try:
fig = plot.draw()
except:
fig = plot
pdf.savefig(fig.fig, height=10, width=18, dpi=500, bbox_inches='tight', pad_inches=0.5)
plt.close()

在您的函数中称为fig 的是seaborn.axisgrid.FacetGrid。要访问底层 matplotlib.figure 并使用其 savefig 方法,您需要使用 fig.fig 选择它。也许将分面网格重命名为 fig 以外的名称可能有助于减少混淆。

关于python - 如何将 sns.facetgrid 保存为 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63075821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com