Matplotlib:添加自定义记号标签并删除yaxis上的自定义记号

2024-06-07 04:10:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想删除一个记号和它的标签,而不是添加一个新的记号标签在一个不同的(但接近的)位置,而不是记号本身。我不知道该怎么做。文中给出了一个实例。在

import matplotlib.pyplot as plt
def main():
    fig = plt.figure()
    x = [1,2,3,4,5]
    y = x
    ax = fig.add_subplot(1,1,1)
    y_ticks = ax.yaxis.get_major_ticks()
    y_ticks[-1].label.set_visible(False)
    ax.set_yticks([3.7], minor=True)
    ax.set_yticklabels(["100"], minor=True)
    ax.plot(x,y)
    plt.show()
if __name__ == '__main__':
    main()

这里留给我的是去掉y=3.5,3.7处的记号。在

另外,如您所见,我访问了y_ticks[-1]以将其标签设置为不可见。这是任意选择的,事实上,如果有人能解释为什么y峈ticks[-1]选择y=3.5处的tick,我将非常感激。在

谢谢

enter image description here

编辑:

正如两个答案中提到的,我将代码改为:

^{pr2}$

这将产生下面的图,您可以看到y_ticks[5]引用位于y=3.5的tick,y_ticks[6]指向位于{}的tick-它跳过位于y=3.7的记号。那么我怎样才能访问它,只删除勾号呢? 我只想解释一下如何去掉标签和标签。在

enter image description here


Tags: 实例importtruematplotlibmainfigplt标签
3条回答

好吧,找到了答案。在y=3.7处添加的y记号被添加到短轴而不是长轴。因此我通过ax.tick_params(axis='y', which='minor', length=0)访问它。但是,这将根据tick_params设置所有次要刻度。在

import matplotlib.pyplot as plt

def main():
    fig = plt.figure()
    x = [1,2,3,4,5]
    y = x
    ax = fig.add_subplot(1,1,1)
    ax.plot(x,y)
    ax.set_yticks([3.7], minor=True)
    ax.set_yticklabels(["100"], minor=True)
    y_ticks_major = ax.yaxis.get_major_ticks()
    y_ticks_major[5].set_visible(False)
    ax.tick_params(axis='y', which='minor', length=0)
    plt.show()
if __name__ == '__main__':
    main()

谢谢你的帮助

尝试y_ticks[-1].set_visible(False)而不是y_ticks[-1].label.set_visible(False)。它使标签和记号标记都不可见。在

编辑:

您可以使用ax.yaxis.get_minor_ticks()访问3,7处的小勾号,如下代码所示:

import matplotlib.pyplot as plt

fig = plt.figure()
x = [1,2,3,4,5]
y = x
ax = fig.add_subplot(1,1,1)
ax.set_yticks([3.7], minor=True)
ax.set_yticklabels(["100"], minor=True)
ax.plot(x,y)

y_ticks = ax.yaxis.get_major_ticks()
y_ticks[5].set_visible(False)
y_minor_ticks = ax.yaxis.get_minor_ticks()
y_minor_ticks[0].label.set_visible(False)

plt.show()

如果只想让100附近的勾号消失,并且希望保留标签,请使用:

^{pr2}$

而不是:

y_minor_ticks = ax.yaxis.get_minor_ticks()
y_minor_ticks[0].label.set_visible(False)

所有允许访问不同记号部分的函数都在matplotlib.axisdocumentation中描述。在

发生的情况是:在创建轴之后,您将得到y记号的列表,而在您绘制任何轴之前,将得到y记号的列表。从坐标轴0.0到0.1的坐标轴列表都是从0.0到0.1的。在

然后,打印时,将添加更多的记号,并使用新标签更新列表中的记号。现在y轴刻度[]中的最后一项位于y轴的中间。在

解决方案:先绘图,然后y_ticks = ax.yaxis.get_major_ticks()。在

相关问题 更多 >