Python y标签在matplotlib绘图中的右侧,共享x和y

Python y标签在matplotlib绘图中的右侧,共享x和y,python,matplotlib,Python,Matplotlib,我试图修改mpl,每列共享x,每行共享y,我想把y记号标签放在右边。 我尝试了类似的解决方案,即 这适用于单个绘图,但不适用于此处:根本没有y记号标签。 建议?同样的问题是把x标签放在顶部 如果我只使用第二个循环,我在第一列中得到示例输出,在第二列中至少得到右侧的y记号标签,但是左侧记号在第二列中消失。为什么会发生这种情况?当您保持第一个循环时,对ax.set\yticklabels([])的调用将杀死所有的ticklabels,因为当您共享轴时,tick标签文本将被链接。使用axes_grid

我试图修改mpl,每列共享x,每行共享y,我想把y记号标签放在右边。 我尝试了类似的解决方案,即

这适用于单个绘图,但不适用于此处:根本没有y记号标签。 建议?同样的问题是把x标签放在顶部


如果我只使用第二个循环,我在第一列中得到示例输出,在第二列中至少得到右侧的y记号标签,但是左侧记号在第二列中消失。为什么会发生这种情况?

当您保持第一个循环时,对ax.set\yticklabels([])的调用将杀死所有的ticklabels,因为当您共享轴时,tick标签文本将被链接。使用axes_grid1的演示演示了在需要不同刻度/标签时使用的一些方法

但是,对于这个简单的示例,您可以改为将标签专门设置为右侧,并单独拖动相关的其他标签对象以关闭其可见性。如果将修改的节替换为以下内容:

for ax in [ax1,ax3]:
    for label in ax.get_yticklabels():
        label.set_visible(False)
for ax in [ax2,ax4]:
    # Change the labelling only
    ax.yaxis.set_tick_params(labelright='on', labelleft='off')
你的勾号标签在右边。我不确定这是否是最有效的方法,但它是有效的


请提供一个完整的最小示例。这将使帮助更容易。@hitzg给你,但正如我在上面链接的那样,它只是从加上我的2 for循环中复制粘贴。我明白了。但是,您注意到左侧没有刻度。你可以通过放置一个网格来隐藏这一点。为什么左手边的蜱虫消失了?怎么把它们弄回来?对不起,我以为你想让左边的虱子消失。如果你想保留标签,为什么要将标签设置为空?也许解释得更准确些,我会把它修好。嗨,为了澄清,我区分了
set\u-yticks()
set\u-yticklebels()
。我在一个简单的绘图中使用了这两种方法,它们按照我期望的方式工作,即:第一种方法定义了记号的位置,第二种方法定义了记号的标签。我只想删除标签,或者在这种情况下保留所有的记号,但将标签放在右边。也许是“获取链接”,我可以使标签消失,如果我使记号本身也消失了?如果是这样的话,我几乎会称之为虫子。啊,我明白了。对不起,我想我读得不够仔细。我已经更新了答案。(另外,旧图片中的网格只是因为我默认使用“bmh”样式,因为我认为它看起来更好,但对于更新,我恢复为matplotlib默认值)
for ax in [ax1,ax3]:
    for label in ax.get_yticklabels():
        label.set_visible(False)
for ax in [ax2,ax4]:
    # Change the labelling only
    ax.yaxis.set_tick_params(labelright='on', labelleft='off')