Seaborn sns.set() 改变绘图背景色

7
在 seaborn 中使用 sns.set() 似乎会改变绘图的背景颜色。
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd


df = pd.DataFrame({"type":["A", "A", "A", "A", "B", "B", "B", "B"],
                   "value":[11, 14, 13, 16, 9, 8, 6, 10],
                  "date":["t1", "t2", "t3", "t4", "t1", "t2", "t3", "t4"]})

grid = sns.FacetGrid(df, size=12.5, hue="type", aspect=2)
grid.map(plt.plot, "date", "value")
plt.show()

seaborn1

然后,如果我运行 sns.set(font_scale=2)(或只是sns.set()),再次绘制相同的图,我会得到:

grid = sns.FacetGrid(df, size=12.5, hue="type", aspect=2)
grid.map(plt.plot, "date", "value")
plt.show()

seaborn2

这对我来说似乎是有些奇怪的行为。 我更喜欢第二个绘图配置,但无论如何,除非这是推荐的方法,否则我都不想随意调用sns.set()

相关版本信息

print("matplotlib version: %s" % matplotlib.__version__)
print("seaborn version: %s" % sns.__version__)

matplotlib version: 2.1.0
seaborn version: 0.8.0
2个回答

8
看文档,似乎 sns.set() 在版本 < 0.8 中被 导入时调用
调用 sns.set 没有任何参数会改变你的图形的原因是它有一些默认参数。从文档中可以看到:

seaborn.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif', font_scale=1, color_codes=False, rc=None)

因此,使用 sns.set(font_scale=2) 将更改字体比例,但也将更改为 sns.set 的默认参数。

那么如何避免这种情况,@DavidG? - TinaTz

0

使用白色样式返回默认背景: sns.set(style='white')


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