【问题标题】:Removing specific ticks from matplotlib plot从 matplotlib 图中删除特定的刻度
【发布时间】:2013-10-30 05:15:03
【问题描述】:

我正在尝试从下面的图中删除原始刻度以阻止它们重叠,或者只是将它们彼此远离也很好我试过这个:

xticks = ax.xaxis.get_major_ticks()
xticks[0].label1.set_visible(False)
yticks = ax.yaxis.get_major_ticks()
yticks[0].label1.set_visible(False)

然而,这从 y 轴上删除了第一个和最后一个刻度,如下所示:

有没有人知道如何做到这一点?任何帮助将不胜感激。

编辑:添加更多示例代码

import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
plt.xlabel(xlab)
plt.ylabel(ylab)
ax.spines["right"].set_color('none')
ax.xaxis.set_ticks_position('top')
ax.yaxis.set_ticks_position('left')
ax.spines["bottom"].set_color('none')
ax.xaxis.set_label_position('top')
ax.spines['left'].set_color('black')
ax.spines['top'].set_color('black')
ax.tick_params(colors='black')
xticks = ax.xaxis.get_major_ticks()
xticks[0].label1.set_visible(False)
yticks = ax.yaxis.get_major_ticks()
yticks[-1].label1.set_visible(False)
for x, y in all:
    ax.plot(x, y, 'ro')

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    你快到了。 y 轴的原点位于底部。这意味着您要删除的勾号,位于顶部,是最后一个,即yticks[-1]

    yticks[-1].set_visible(False)
    

    【讨论】:

    • 如此接近但到目前为止,我在这里尝试了两个答案,但结果不同!将 yticks 设置为 [-1] 以删除 -145 处的标签,我不明白我最初的努力是如何从 y 轴上删除 2 个刻度
    • 但这不是一个最小的工作示例。
    • 抱歉,您还需要什么?
    • 脚本应该重现您描述的错误。如果我尝试运行你的 sn-p,我显然会得到错误,因为例如 all 没有定义。
    • all 是传递给此函数的数据列表我不认为您也想要数据吗?
    【解决方案2】:

    为什么不干脆做

    ax.set_xticks(ax.get_xticks()[1:])
    ax.set_yticks(ax.get_yticks()[:-1])
    

    ax 是轴对象。

    【讨论】:

    • 在 matplotlib 3.0.2 中,这会隐藏所有刻度标签。 WTH?
    【解决方案3】:
    ax.xaxis.get_major_ticks()[0].draw = lambda *args:None
    ax.yaxis.get_major_ticks()[-1].draw = lambda *args:None
    

    【讨论】:

    • 我尝试了两个答案,这设法删除了 0.2 处的标签,但随后在 -145 而不是 140 处打勾
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2020-12-24
    • 2020-12-16
    相关资源
    最近更新 更多