我有一些预定义的matplotlibrc
样式,可用于绘图。下面是使用它样式化的示例图像
另一方面,我发现seaborn的sns.set(font_scale=1.25)
很方便,这使我可以快速控制字体大小。
但是,在更改字体大小时,它还会对我的绘图应用默认的seaborn样式,因此matplotlib的默认设置被覆盖。
我改用sns.set(style=None, font_scale=1.25)
,但线条颜色和轴标签的字体系列仍然更改。
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)
答案 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的默认设置。
比较:
默认图:
使用sns.set_context(font_scale=1.25)
:
使用sns.set_context("notebook", font_scale=1.25)
: