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

10 python numpy matplotlib scipy

我有一个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") 
Run Code Online (Sandbox Code Playgroud)

这会产生这个图像:在此输入图像描述

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

#ax.yaxis.set_tick_params(size=0)
Run Code Online (Sandbox Code Playgroud)

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

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

ax.spines["left"].axis.axes.tick_params(direction="outward") 
Run Code Online (Sandbox Code Playgroud)

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

ax.yaxis.set_ticks_position("left")
Run Code Online (Sandbox Code Playgroud)

joa*_*uin 16

你可以简单地使用:

ax.tick_params(axis='y', direction='out')
Run Code Online (Sandbox Code Playgroud)

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

ax.yaxis.tick_left()
Run Code Online (Sandbox Code Playgroud)

这不会绘制正确的刻度


TMo*_*ver 11

您可以使用:

ax.tick_params(top="off")
ax.tick_params(bottom="off")
ax.tick_params(right="off")
ax.tick_params(left="off")
Run Code Online (Sandbox Code Playgroud)