matplotlib 在 Seaborn 下设置小刻度

Yuc*_*uca 3 matplotlib python-3.x seaborn

我有以下代码来绘制一系列子图:

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)
Run Code Online (Sandbox Code Playgroud)

但是,这未能包括情节上的次要刻度“标记”。我也试过

ax[1, 1].plot(data, alpha=0.5)
ax[1, 1].xaxis.set_minor_locator(minorLocator)
ax[1, 1].xaxis.set_minor_formatter(NullFormatter())
Run Code Online (Sandbox Code Playgroud)

但它也失败了。由于我正在使用 seaborn 样式,因此我怀疑需要覆盖 Seaborn 参数,但我不确定如何。这是我的 Seaborn 实现

import seatborn as sns
sns.set()
Run Code Online (Sandbox Code Playgroud)

如何将“每日”标记添加到我的 x 轴?这些是我的情节的例子:

在此处输入图片说明

Imp*_*est 6

.set()默认情况下,Seaborn会关闭刻度线。它使用它的darkgrid样式,它修改matplotlib rc 参数并将xtick.bottomytick.left参数设置为Falsesource)。

一种解决方案是将它们设置为True全局,

sns.set(rc={"xtick.bottom" : True, "ytick.left" : True})
Run Code Online (Sandbox Code Playgroud)

或者

sns.set()
plt.rcParams.update({"xtick.bottom" : True, "ytick.left" : True})
Run Code Online (Sandbox Code Playgroud)

或者,或者,为相关轴打开它们

ax[1, 1].tick_params(which="both", bottom=True)
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的一件事是,单独使用 `ax[1, 1].tick_params(which="both", Bottom=True)` 是行不通的。我让它工作的方法是保留 `ax[1, 1].xaxis.set_minor_locator(minorLocator)` (3认同)