python - 隐藏内部刻度线并在 matplotlib 子图上选择外部刻度标签?

标签 python matplotlib

我有一个图形,由 6 个形状为 (2, 3) 的子图组成。我想删除所有内部刻度线,只显示左侧和底部的刻度标签。

默认刻度线:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(2,3,
                       sharex = True,
                       sharey = True)
plt.subplots_adjust(hspace = 0,
                    wspace = 0)

产生这个:

Default

在查看了无数示例之后,我设法移除了内部刻度线,但现在出现了新的(附加的)刻度线标签。我找到的删除刻度标签的解决方案不起作用,它们删除了所有 x(或 y)刻度标签,而不仅仅是指定的轴。

新代码:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(2,3,
                       sharex = True,
                       sharey = True)
plt.subplots_adjust(hspace = 0,
                    wspace = 0)
ax[0,0].xaxis.set_ticks_position('top')
ax[0,0].yaxis.set_ticks_position('left')
ax[0,1].xaxis.set_ticks_position('top')
ax[0,1].yaxis.set_ticks_position('none')
ax[0,2].xaxis.set_ticks_position('top')
ax[0,2].yaxis.set_ticks_position('right')

ax[1,0].xaxis.set_ticks_position('bottom')
ax[1,0].yaxis.set_ticks_position('left')
ax[1,1].xaxis.set_ticks_position('bottom')
ax[1,1].yaxis.set_ticks_position('none')
ax[1,2].xaxis.set_ticks_position('bottom')
ax[1,2].yaxis.set_ticks_position('right')

产生这个:

Attempt

我想要的最终输出是这样的:

Final

注意左侧和底部的标签,但周边有刻度线。

最佳答案

这适用于任意大小的网格。您的问题是您没有删除刻度线,只是将它们移到顶部:

import matplotlib.pyplot as plt
import numpy as np

Nrows = 2
Ncols = 3

fig, ax = plt.subplots(Nrows, Ncols,
                       sharex=True,
                       sharey=True)
plt.subplots_adjust(hspace=0,
                    wspace=0)


for i in range(Nrows):
    for j in range(Ncols):
        if i == 0:
            ax[i,j].xaxis.set_ticks_position('top')
            plt.setp(ax[i,j].get_xticklabels(), visible=False)
        elif i == Nrows-1:
            ax[i,j].xaxis.set_ticks_position('bottom')
        else:
            ax[i,j].xaxis.set_ticks_position('none')

        if j == 0:
            ax[i,j].yaxis.set_ticks_position('left')
        elif j == Ncols-1:
            ax[i,j].yaxis.set_ticks_position('right')
            plt.setp(ax[i,j].get_yticklabels(), visible=False)
        else:
            ax[i,j].yaxis.set_ticks_position('none')

关于python - 隐藏内部刻度线并在 matplotlib 子图上选择外部刻度标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161231/

相关文章:

python - 数据框中对象值的 KeyError

python - 将从类创建的字符串对象转换为列表

python datetime strptime 不匹配格式

python - x 轴上带有日期的子图

python - 如何在x轴上以正确的频率绘制信号的FFT?

python - 如何调整行或列中的具体数据?

python - Spark : How to use HBase filter e. g QualiferFilter by python-api

python - 如何使用 numpy/scipy/matplotlib 以最小平滑度绘制线(多边形链)

python - 以十六进制格式提取 matplotlib 颜色图

python - 将循环的输出保存到文件