python - 使用 spines 在 matplotlib 中仅自定义刻度线的一侧

标签 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

我只想显示 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/

相关文章:

python - 在扭曲中使用我自己的主循环

python - 将 Python 列表写入 csv 文件

python - python中的ANOVA使用带有statsmodels或scipy的pandas数据框?

python - 如何将异步插入到 mongodb 中的日志中?

python - 在数据帧上乘以向量 - 向量化

python - 我如何生成 100 个网格 map ?

python - 如何填充列表中的值并将其转换为数据帧?

python - 如何为迭代的每一列创建变量?

python - 利用遗传算法克服模型中不同大小的数据集

聊天机器人的 Python 字符常量