seaborn despine覆盖了Python

时间:2016-05-11 19:09:40

标签: python matplotlib seaborn

seaborn库中的despine函数似乎会覆盖matplotlib中的字体设置参数。例如:

plt.figure()
plt.plot([1,2,3],[1,2,3])
plt.xticks([1,2,3], fontsize=13)
# despine blocks xtick labels font size
sns.despine(trim=True, offset=2)
plt.show()

如果我注释掉sns.despine(trim=True, offset=2)行,那么fontsize的{​​{1}}参数就可以了。如何在不重写字体大小设置的情况下使用plt.xticks

2 个答案:

答案 0 :(得分:1)

尝试使用rcParams设置xtick字体大小:

import matplotlib as mpl
plt.figure()
mpl.rcParams['xtick.labelsize'] = 13 # must be place before the actual plot creation
plt.plot([1,2,3],[1,2,3])
# despine blocks xtick labels font size
sns.despine(trim=True, offset=2)
plt.show()

这应该可以正常应用despine

答案 1 :(得分:1)

这是我在为seaborn添加脊椎修剪/偏移功能时遇到的棘手问题。你可以在这里看到我原来的问题:

Efficiently cache and restore matplotlib axes parameters after moving spines

我们提出的解决方案是在MPL邮件列表的一些帮助之后出现的: https://github.com/mwaskom/seaborn/blob/dfdd1126626f7ed0fe3737528edecb71346e9eb0/seaborn/utils.py#L288

看起来这是我们的解决方法遗漏的边缘情况。

作为一种解决方法,我建议在格式化刻度之前进行despining / offsetting:

%matplotlib inline
from matplotlib import pyplot
import seaborn

fig, ax = pyplot.subplots()
# despine blocks xtick labels font size
seaborn.despine(trim=True, offset=2)

x = [1, 2, 3]
ax.plot(x, x)
ax.set_xticks(x)
ax.set_xticklabels(x, fontsize=13)

enter image description here