【问题标题】:matplotlib set minor ticks under Seabornmatplotlib 在 Seaborn 下设置小刻度
【发布时间】:2018-09-10 14:36:26
【问题描述】:

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

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 轴?这些是我的情节示例:

【问题讨论】:

    标签: python-3.x matplotlib seaborn


    【解决方案1】:

    Seaborn .set() 默认关闭刻度。它使用它的darkgrid 样式,它修改了matplotlib rc parameters 并将xtick.bottomytick.left 参数设置为False (source)。

    解决方案是将它们设置为全局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)
    

    【讨论】:

    • 使用了最后一个选项,效果很好,非常感谢:)
    • 需要注意的一点是,单独使用ax[1, 1].tick_params(which="both", bottom=True) 是行不通的。我让它工作的方法是保持ax[1, 1].xaxis.set_minor_locator(minorLocator)
    • 当然,这些行应该添加到问题中的代码中。这也是为什么在问题中有一致的可运行代码很有用的原因。
    • 我只是澄清一下,因为至少有其他人对该解决方案感兴趣,而您的原始帖子并不清楚是否仅此一项可以解决问题,但感谢您在 cmets 中提及!
    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2022-06-10
    • 1970-01-01
    • 2016-02-13
    相关资源
    最近更新 更多