Python 在matplotlib中为记号标签使用图像

Python 在matplotlib中为记号标签使用图像,python,matplotlib,Python,Matplotlib,我有一系列固定宽度的小图像,我想用它们替换刻度标签。例如,考虑下面的最小工作示例: import numpy as np import pylab as plt A = np.random.random(size=(5,5)) fig, ax = plt.subplots(1, 1) ax.matshow(A) plt.show() 我想用自定义图像替换“0”。我可以看到标签,并且显示得很好。然而,我不确定 标记标签的位置在哪里,因为它们位于绘图之外 使用imshow在图像放入轴后将被“

我有一系列固定宽度的小图像,我想用它们替换刻度标签。例如,考虑下面的最小工作示例:

import numpy as np
import pylab as plt

A = np.random.random(size=(5,5))
fig, ax = plt.subplots(1, 1)
ax.matshow(A)
plt.show()

我想用自定义图像替换“0”。我可以看到标签,并且显示得很好。然而,我不确定

  • 标记标签的位置在哪里,因为它们位于绘图之外
  • 使用
    imshow
    在图像放入轴后将被“剪裁”时显示该图像

我的想法是使用
set\u clip\u on
或自定义艺术家,但我没有取得多大进展

这是一个有趣的问题,可能有很多可能的解决方案。这是我的方法,基本上首先计算标签
'0'
的位置,然后使用绝对坐标在那里绘制一个新轴,最后将图像放在那里:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import pylab as pl

A = np.random.random(size=(5,5))
fig, ax = plt.subplots(1, 1)

xl, yl, xh, yh=np.array(ax.get_position()).ravel()
w=xh-xl
h=yh-yl
xp=xl+w*0.1 #if replace '0' label, can also be calculated systematically using xlim()
size=0.05

img=mpimg.imread('microblog.png')
ax.matshow(A)
ax1=fig.add_axes([xp-size*0.5, yh, size, size])
ax1.axison = False
imgplot = ax1.imshow(img,transform=ax.transAxes)

plt.savefig('temp.png')