python - 如何更改 matplotlib 中的轴标签?

标签 python matplotlib

我有以下代码,它使用 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()

创建的绘图符合预期:

enter image description here

现在,为了重新标记 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”替换,但其他一切保持不变。但是,我得到了以下情节:

enter image description here

  1. 绘图左侧出现一些意想不到的白色区域
  2. 所有其他标签都消失了。

如何正确地做到这一点?

提醒一下:我想获得与原始图像(第一个图)完全相同的结果,只是更改了其中一个标签。

这个问题之前已经被问过,一个例子是 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()

创建图像如下:

enter image description here

不再显示白色区域,但其他标签仍然不显示。

最佳答案

使用子图创建轴,以便您可以使用 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()

输出:

Output image

希望这是您所需要的!

关于python - 如何更改 matplotlib 中的轴标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59798684/

相关文章:

Python - 使用乘法运算符创建列表中对象的副本

python - 在Python中循环类的一些变量

python - Tensorflow 2 中用于自定义训练循环的 Tensorboard

python - 在Python中绘制3D曲面

python - 在 matplotlib 中结合对数和线性刻度

python - Pandas:将列标题旋转到行标签

python - Django 运行服务器错误(psycopg2)

python - 如何获取是/否问题的某些动词的否定词列表?

python - 使用python在同一个图中绘制2个不同大小的图

python - 灵活地向图形添加子图以及向图形添加一个颜色条