我有一个由 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)
Run Code Online (Sandbox Code Playgroud)
产生这个:

在查看了无数示例后,我设法删除了内部刻度线,但现在出现了新的(附加的)刻度线标签。我找到的删除刻度标签的解决方案不起作用,它们删除了所有 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')
Run Code Online (Sandbox Code Playgroud)
产生这个:

我希望最终输出是这样的:

注意左侧和底部的标签,但在周边有刻度线。
这适用于任意大小的网格。您的问题是您没有删除刻度线,只是将它们移到顶部:
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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3087 次 |
| 最近记录: |