2013-10-03 72 views
1

我有一个由6个形状(2,3)的子图组成的图。我想删除所有内部刻度标记,只有左侧和底部显示刻度标签。隐藏内部刻度标记并在matplotlib子图上选择外部刻度标签?

默认刻度线:

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

注意标签上左边和底部,但是ti ck标记周边。

回答

3

这适用于任意大小的网格。你的问题是,你没有去除蜱,你只需将它们转移到顶端:

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') 
+0

感谢您的回答,但我试图让打勾在整个周边标记(就像我的第二个画面),只有左侧/底部的标签。我已经用期望的最终输出的“photoshopped”示例更新了这个问题。 – Blink

+0

我已经更新了答案,可以做你想做的事情:显示蜱但隐藏标签。 – chthonicdaemon

+0

正是我想要的。我之前使用过get_yticklabels()命令,但从来没有使用过setp(),看起来这就是我错过的!谢谢,这非常有帮助! – Blink