更改 matplotlib 图表中的刻度文本

Change tick text in matplotlib chart

假设我想将“2”的刻度标签从 Y 轴更改为 'B' 我使用了 plt.yticsk(2,'B') 但是好像不行

有什么办法可以修改吗?这是代码:

import matplotlib.pyplot as plt 

y = [-1,2,3,4,5,0,1]
x = [3,5,3,9,7,1,4]

colorsValue = []
for value in x:
    if value < 4:
        colorsValue.append('yellow')
    elif value >= 4:
        colorsValue.append('red')
    else:
        colorsValue.append('orange')

plt.barh(y, x, color = colorsValue)

plt.ylabel('Y')
plt.xlabel('X')

plt.yticks(2,'b')

plt.show()

您需要先查询位置(所谓的 ticks)和标签,然后您可以修改它们并将它们设置为名为 plt:

的 pyplot 对象
import matplotlib.pyplot as plt 
import matplotlib.text

y = [-1,2,3,4,5,0,1]
x = [3,5,3,9,7,1,4]

colorsValue = []
for value in x:
    if value < 4:
        colorsValue.append('yellow')
    elif value >= 4:
        colorsValue.append('red')
    else:
        colorsValue.append('orange')

plt.barh(y, x, color = colorsValue)

plt.ylabel('Y')
plt.xlabel('X')

ticks, labels = plt.yticks()
for i,t in enumerate(ticks):
    labels[i].set_text(t)
    if t == 2:
        labels[i].set_text('b')
plt.yticks(ticks,labels)

plt.show()

这是结果图:

您可以通过查看如何制作您期望的东西来找到灵感:https://www.python-graph-gallery.com/191-custom-axis-on-matplotlib-chart

结果可能如下:

import matplotlib.pyplot as plt

y = [-1,2,3,4,5,0,1]
x = [3,5,3,9,7,1,4]
yticks = ['-1','b','3','4','5','0','1']

colorsValue = []
for value in x:
    if value < 4:
        colorsValue.append('yellow')
    elif value >= 4:
        colorsValue.append('red')
    else:
        colorsValue.append('orange')

plt.barh(y, x, color = colorsValue)

plt.ylabel('Y')
plt.xlabel('X')

plt.yticks(y,yticks)

plt.show()

这是您期望的结果吗?