使用matplotlib绘图时,如何更改刻度标签的位置(移动)

4
我正在使用matplotlib进行绘图。以下是代码(zvals是值):
cmap = mpl.colors.ListedColormap(['darkblue', 'blue', 'lightblue','lightgreen','yellow','gold','orange','darkorange','orangered','red'])
bounds=[0, 10,20,30,40,50,60,70,80,100,200,1000]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
img2 = plt.imshow(zvals,interpolation='nearest',
                cmap = cmap,
                norm=norm,
                origin='lower')


xlocations = na.array(range(30)) + 0.5
xticks(xlocations, [str(x+1) for x in arange(30)], rotation=0, size=5)
gca().xaxis.set_ticks_position('none')
gca().yaxis.set_ticks_position('none')  
grid(True)

这导致以下图片: http://imageshack.us/a/img145/7325/histogrammoverview.png 我想将xticks(1,2,3,..)的标签向左移动一点,使它们位于相应的颜色框下面。相应地,我也想将yticks(user1和user2)的标签向下移动一点,以便正确显示它们。怎么做?
编辑:实际上我可以更改以下行 xlocations = na.array(range(30)) + 0.5 到 xlocations = na.array(range(30))
然后得到的图片像这样: http://imageshack.us/a/img338/7325/histogrammoverview.png 请注意,网格“穿过”彩色框,这不是我想要的。我希望网格像上面的图片一样围绕着彩色框。在这个版本中,标签(1,2,3,...)位于盒子下方。如何使标签放置正确(位于彩色框下方),并且网格围绕彩色框而不是穿过彩色框。
解决方法:
这个解决方案可行(如答案所建议):
periods = 30
xlocations = na.array(range(periods))
xminorlocations = na.array(range(periods))+0.5
xticks(xlocations, [str(x+1) for x in arange(periods)], rotation=0, size=5)
plt.set_xticks(xminorlocations, minor=True)
grid(True, which='minor', linestyle='-')

结果: hxxp://imageshack.us/a/img9/7325/histogrammoverview.png

1个回答

2

我认为您可以通过以下方法来管理:

  • 将主要刻度位置设置在每个正方形的中间。
  • 将次要刻度设置为每个正方形的边缘。
  • 仅在次要刻度处显示网格。

只需使用以下命令即可仅在次要刻度处显示网格:

plt.grid(True, which='minor')

我也会将线条样式设置为'-'


1
这个成功了。我使用的代码是:xlocations = na.array(range(periods)) xminorlocations = na.array(range(periods))+0.5 xticks(xlocations, [str(x+1) for x in arange(periods)], rotation=0, size=5) plt.set_xticks(xminorlocations, minor=True) grid(True, which='minor', linestyle='-')结果: http://imageshack.us/a/img9/7325/histogrammoverview.png - beta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接