我有一系列小的固定宽度图像,我想用它们替换刻度标签。例如,请考虑以下最小工作示例:
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"使用自定义图像。我可以turn off标签load an image into an array并将其显示得很好。但是,我不确定
imshow
显示该图像,并将其剪裁为#34;如果放入一个轴。我的想法是以某种方式使用set_clip_on
或自定义艺术家,但我还没有取得多大进展。
答案 0 :(得分:5)
有趣的问题,并且可能有许多可能的解决方案。这是我的方法,基本上首先计算标签'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')