Python Matplotlib:添加自定义记号标签并删除y轴上的自定义记号
我想删除一个勾号和它的标签,而是在一个不同(但接近)的位置添加一个新的勾号标签,而不添加勾号本身。我不知道该怎么做。给出了一个实例Python Matplotlib:添加自定义记号标签并删除y轴上的自定义记号,python,matplotlib,Python,Matplotlib,我想删除一个勾号和它的标签,而是在一个不同(但接近)的位置添加一个新的勾号标签,而不添加勾号本身。我不知道该怎么做。给出了一个实例 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
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,我将不胜感激
谢谢
编辑:
正如两个答案中提到的,我将代码更改为:
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 = ax.yaxis.get_major_ticks()
y_ticks[5].set_visible(False)
y_ticks[6].label.set_visible(False)
plt.show()
if __name__ == '__main__':
main()
这将生成下面的图,您可以看到y_ticks[5]
指位于y=3.5
的tick,而y_ticks[6]
指位于y=4.0
的tick-它跳过位于y=3.7
的tick。那么,我如何访问它并只删除勾号呢?
这两个建议只解释了如何删除勾号和标签,或者只删除标签(没有勾号),我希望删除勾号并保留标签
尝试
y\u刻度[-1]。设置可见(假)
而不是y\u刻度[-1]。标签。设置可见(假)
。它使标签和记号标记都不可见
编辑:
您可以使用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附近的勾号消失,并且希望保留标签,请使用:
ax.yaxis.get_minorticklines()[0].set_visible(False)
而不是:
y_minor_ticks = ax.yaxis.get_minor_ticks()
y_minor_ticks[0].label.set_visible(False)
所有允许访问不同记号部分的函数都在matplotlib.axis
中描述。请尝试y_记号[-1]。设置_可见(假)
而不是y_记号[-1]。label.set_可见(假)
。它使标签和记号标记都不可见
编辑:
您可以使用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附近的勾号消失,并且希望保留标签,请使用:
ax.yaxis.get_minorticklines()[0].set_visible(False)
而不是:
y_minor_ticks = ax.yaxis.get_minor_ticks()
y_minor_ticks[0].label.set_visible(False)
所有这些允许访问不同记号部分的函数都在matplotlib.axis
中进行了描述。发生的情况是:在创建了一个轴之后,您将获得y_记号列表,但在绘制任何东西之前。因此,matplotlib在两个轴上都设置了六个记号的轴,从0.0到1.0,并提供记号列表
然后,打印时,将添加更多的记号,并使用新标签更新列表中的记号。你的yjiks[]中的最后一个项目现在位于y轴的中间。
解决方案:先绘图,然后y_ticks=ax.yaxis.get_major_ticks()
发生的情况是:在创建轴之后,您会得到y_ticks的列表,但是在绘制任何东西之前。因此,matplotlib在两个轴上都设置了六个记号的轴,从0.0到1.0,并提供记号列表
然后,打印时,将添加更多的记号,并使用新标签更新列表中的记号。你的yjiks[]中的最后一个项目现在位于y轴的中间。
解决方案:先绘图,然后y\u ticks=ax.yaxis.get\u major\u ticks()。在y=3.7
处添加的y记号被添加到短轴而不是长轴。因此,我通过ax.tick_参数(axis='y',which='minor',length=0)访问它。
。但是,这将根据勾号参数设置所有次要勾号
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=3.7
处添加的y记号被添加到短轴而不是长轴。因此,我通过ax.tick_参数(axis='y',which='minor',length=0)访问它。
。但是,这将根据勾号参数设置所有次要勾号
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\u ticks[-1]。set\u visible(False)
将y=3.5处的tick设置为不可见,但y\u ticks[-1]。label.set\u visible(False)
不会更改任何内容。@noamgy\u ticks[-1]。label.set\u visible(False)
在代码中用于使标签接近3.5 tick不可见。如果您使用y_ticks[-1]。设置_visible(False)
,它会使标签和tick都不可见,因此您不再需要它。您是正确的,但是我仍然无法使y=3.7
处的tick消失。由于某些原因,它不在y_ticks
中。这很好。谢谢似乎y_ticks[-1]。set_visible(False)
将y=3.5处的刻度设置为不可见,但y_ticks[-1]。label.set_visible(False)
不会更改任何内容。@noamgy_ticks[-1]。label.set_visible(False)
在代码中用于使标签接近3.5处不可见。如果您使用y_ticks[-1]。设置_visible(False)
,它会使标签和tick都不可见,因此您不再需要它。您是正确的,但是我仍然无法使y=3.7
处的tick消失。由于某些原因,它不在y_ticks
中。这很好。谢谢但是,我不确定我的y_勾号列表是否更新为y=3.7
勾号。因此,我无法访问它来修改它。但是,我不确定我的y_勾号列表是否更新为y=3.7
tick。因此,我无法访问它来修改它。