我画了一个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")
这会产生这张图片:
我只想显示 x 轴,它使用脊柱工作,但现在它为右侧的 ya 轴绘制了这些悬挂的刻度线。我怎样才能删除这些?我喜欢将 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")
最佳答案
你可以简单地使用:
ax.tick_params(axis='y', direction='out')
这将根据您的需要调整刻度线的方向。并且:
ax.yaxis.tick_left()
这不会绘制正确的刻度
关于python - 使用 spines 在 matplotlib 中仅自定义刻度线的一侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9051494/