我有以下代码,它使用 matplotlib 创建一个简单的绘图(python 3.6.9、matplotlib 3.1.2、Mac Mojave):
import numpy as np
import matplotlib.pyplot as plt
plt.imshow(np.random.random((50,50)))
plt.show()
创建的绘图符合预期:
现在,为了重新标记 xtick/ytick 标签,我使用以下代码
import numpy as np
import matplotlib.pyplot as plt
plt.imshow(np.random.random((50,50)));
ticks, labels = plt.xticks()
labels[1] = '22'
plt.xticks(ticks, labels)
plt.show()
我希望第二个标签被“22”替换,但其他一切保持不变。但是,我得到了以下情节:
- 绘图左侧出现一些意想不到的白色区域
- 所有其他标签都消失了。
如何正确地做到这一点?
提醒一下:我想获得与原始图像(第一个图)完全相同的结果,只是更改了其中一个标签。
这个问题之前已经被问过,一个例子是 here 。但答案似乎并不奏效。这是代码
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
plt.imshow(np.random.random((50,50)))
labels = [item.get_text() for item in ax.get_xticklabels()]
labels[1] = 'Test'
ax.set_xticklabels(labels)
plt.show()
创建图像如下:
不再显示白色区域,但其他标签仍然不显示。
最佳答案
使用子图创建轴,以便您可以使用 set_xticklabels 方法,以便可以更新标签。
您需要使用 canvas.draw() 来获取值。
import numpy as np
import matplotlib.pyplot as plt
fig,ax = plt.subplots()
ax.imshow(np.random.random((50,50)));
fig.canvas.draw()
#labels = ['-10','0','22','20','30','40'] or
labels[2]=22
ax.set_xticklabels(labels)
plt.show()
输出:
希望这是您所需要的!
关于python - 如何更改 matplotlib 中的轴标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59798684/