Seaborn下如何设置matplotlib的次刻度线。

5
我有以下代码用于绘制一系列子图:
minorLocator = AutoMinorLocator()
fig, ax = plt.subplots(4, 2, figsize=(8, 12))

data = np.random.rand(20,5)
ax[1, 1].plot(data, alpha=0.5)
ax[1, 1].set_title('Simulation')    
ax[1, 1].xaxis.set_minor_locator(minorLocator)

然而,这没有包括图表上的次要刻度 "标记"。我也尝试了。
ax[1, 1].plot(data, alpha=0.5)
ax[1, 1].xaxis.set_minor_locator(minorLocator)
ax[1, 1].xaxis.set_minor_formatter(NullFormatter())

但它也会失败。由于我正在使用seaborn风格,我怀疑需要覆盖Seaborn参数,但我不确定如何做到这一点。这是我的Seaborn实现:

import seatborn as sns
sns.set()

我该如何在x轴上添加“daily”标记?以下是我的绘图示例:

enter image description here

1个回答

12
Seaborn中的.set()默认关闭刻度。它使用了darkgrid风格,该风格修改了matplotlib rc参数,并将xtick.bottomytick.left参数设置为False (来源)。解决方法是将它们全局设置为True
sns.set(rc={"xtick.bottom" : True, "ytick.left" : True})

或者

sns.set()
plt.rcParams.update({"xtick.bottom" : True, "ytick.left" : True})

或者,作为另一种选择,可以将它们打开以针对相关的轴。
ax[1, 1].tick_params(which="both", bottom=True)

使用了最后一个选项,它完美地工作了,非常感谢 :) - Yuca
3
需要注意的是,仅使用ax [1,1] .tick_params(which ="both", bottom = True)是不起作用的。我让它起作用的方法是保持ax[1,1].xaxis.set_minor_locator(minorLocator) - Yuca
1
当然,这些行是打算添加到问题中的代码中的。这也是在问题中拥有一致可运行的代码的原因。 - ImportanceOfBeingErnest
我只是想澄清一下,因为至少还有一个人对解决方案感兴趣,而你的原始帖子并没有明确说明这是否可以单独解决问题,但感谢你在评论中提到了这一点! - Yuca

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