如何在seaborn中实现透明的图形和暗色网格背景?

3
保存透明图像的默认行为是将背景设置为透明,但我希望保留原有背景,并使图中绘图周围的白色空间透明化。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

%load_ext autoreload
%autoreload 2
%matplotlib inline
%config InlineBackend.figure_format = 'svg'

tips = sns.load_dataset("tips")

# Set background of the charts' to be a dark grid.
sns.set_style("darkgrid")

g = sns.FacetGrid(tips, col="smoker", col_order=["Yes", "No"])
g = g.map(plt.hist, "total_bill")

# Save figure with a transparent background (but this unfortunately)
# overrides the dark grid, whereas I want the white surrounding the
# plots to be transparent.
plt.savefig("example.pdf", transparent=True)

如笔记本中所示的图形(带有暗网格)

如笔记本中所示的图形(带有暗网格)

如保存时所显示的图形(无背景)

如保存时所显示的图形(无背景)

4
facecolor=(1,1,1,0) - ImportanceOfBeingErnest
@ImportanceOfBeingErnest 这是要添加到 plt.savefig(*) 调用中吗?对我来说,这最终会再次出现白色背景。 - Xenocidist
1
它应该替换transparent参数。 - ImportanceOfBeingErnest
谢谢!这对我有用——如果可以的话,我会将您的评论标记为“回答了我的问题”。(在此之前,我没有清除内核,这是问题所在)。 - Xenocidist
这应该是正确的答案。 - Bricam
1个回答

0
您可以更新matplotlibrcParams,使图形背景透明但保持网格活动状态,将以下代码添加到您的代码中:
from matplotlib import rc

matplotlib.rcParams['axes.grid'] = True
matplotlib.rcParams['savefig.transparent'] = True

当我将这个代码片段添加到上面的代码中时,暗网格会溢出并覆盖整个图像 - 例如,没有透明度,只有暗网格背景。你也遇到了这个问题吗? - Xenocidist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接