使用刺来定制matplotlib中刻度线的一侧

时间:2012-01-29 06:52:02

标签: python numpy scipy matplotlib

我有一个matplotlib水平条,如下所示:

import matplotlib.pyplot as plt
from numpy import *
from scipy import *
bars = arange(5) + 0.1
vals = rand(5)
print bars, vals
plt.figure(figsize=(5,5), dpi=100)
spines = ["bottom"]
ax = plt.subplot(1, 1, 1)
for loc, spine in ax.spines.iteritems():
  if loc not in spines:
    spine.set_color('none')
# don't draw ytick marks
#ax.yaxis.set_tick_params(size=0)
ax.xaxis.set_ticks_position('bottom')
plt.barh(bars, vals, align="center")
plt.savefig("test.png") 

生成此图像:enter image description here

我想只显示使用刺的xaxis,但现在它为右手yaxis绘制了这些悬挂的标记。我怎样才能删除这些?我喜欢将ytickmarks保留在绘图的左侧,并使它们面朝外(与条形相反的方向)。我知道我可以通过取消注释行来完全删除ytickmarks:

#ax.yaxis.set_tick_params(size=0)

但我想只在左侧保留ytick标记。谢谢。

编辑:我在经过一些试验和错误后找到了解决方案,虽然我确定我的解决方案可能不是最好的方法,所以请让我知道你的想法。我发现我能做到:

ax.spines["left"].axis.axes.tick_params(direction="outward") 

设置刻度标记方向。为了摆脱正确的y轴刻度,我使用:

ax.yaxis.set_ticks_position("left")

2 个答案:

答案 0 :(得分:16)

你可以简单地使用:

ax.tick_params(axis='y', direction='out')

这将根据您的需要定位刻度。和

ax.yaxis.tick_left()

这不会绘制正确的刻度

答案 1 :(得分:11)

您可以使用:

ax.tick_params(top="off")
ax.tick_params(bottom="off")
ax.tick_params(right="off")
ax.tick_params(left="off")