在保持matplotlib样式的同时,用seaborn缩放人物的字体

时间:2018-07-13 11:16:16

标签: python matplotlib seaborn

我有一些预定义的matplotlibrc样式,可用于绘图。下面是使用它样式化的示例图像

enter image description here

另一方面,我发现seaborn的sns.set(font_scale=1.25)很方便,这使我可以快速控制字体大小。
但是,在更改字体大小时,它还会对我的绘图应用默认的seaborn样式,因此matplotlib的默认设置被覆盖。
我改用sns.set(style=None, font_scale=1.25),但线条颜色和轴标签的字体系列仍然更改。

enter image description here

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

#sns.set(style=None, font_scale=1.25)

fig = plt.figure(figsize=(3.4, 2.1), frameon=False)
fig.tight_layout()

x = np.linspace(0, 2, 500)

ax = fig.add_subplot(111)
ax.set_xlabel('xlabel, some units')
ax.set_ylabel('ylabel, some units')

ax.plot(x, x**0.5, label='$x^{0.5}$')
ax.plot(x, x**1.5, label='$x^{1.5}$')
ax.legend()

fig.savefig('output.png')
plt.close(fig)

2 个答案:

答案 0 :(得分:2)

一种可能性是让自己的职能重现Seaborn在“引擎盖下”所做的工作

此内容改编自seaborn's code on github

def scale_fonts(font_scale):
    font_keys = ["axes.labelsize", "axes.titlesize", "legend.fontsize",
             "xtick.labelsize", "ytick.labelsize", "font.size"]
    font_dict = {k: matplotlib.rcParams[k] * font_scale for k in font_keys}
    matplotlib.rcParams.update(font_dict)

您必须确保上面的font_keys的值是rc文件中的数字值(例如12,而不是“ medium”),否则,仅此而已。

答案 1 :(得分:1)

您正在寻找set_context

sns.set_context("notebook", font_scale=1.25)

这将根据预定义的"notebook"样式缩放字体,该样式似乎最接近matplotlib的默认设置。

比较:

默认图:

enter image description here

使用sns.set_context(font_scale=1.25)

enter image description here

使用sns.set_context("notebook", font_scale=1.25)

enter image description here