我想将图像设置为我制作的情节的ylabel。
以下代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cbook import get_sample_data
from matplotlib.offsetbox import (TextArea, DrawingArea, OffsetImage,
AnnotationBbox)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3,4,5,6,7],[1,4,2,8,5,7,1])
arr = np.arange(100).reshape((10, 10))
im = OffsetImage(arr, zoom=2)
im.image.axes = ax
xy = (1, 5)
ab = AnnotationBbox(im, xy)
ax.add_artist(ab)
plt.show()
生成以下图:
我希望那张照片位于yaxis刻度的左边,而不是在情节上。
我尝试更改了行xy = (1, 5)
,但这只会让图片消失。
我也尝试过编写ax.set_ylabel(ab)
和ax.set_ylabel(im)
,但是(可预见)这些只是将对象的名称作为y轴标签。
答案 0 :(得分:1)
您可能不希望根据数据坐标来定位ylabel,因为一旦绘制不同的数据或缩放到绘图中,这将改变ylabel。
而是将其定位在轴坐标中。两个轴方向的范围从0到1,这样y标签可能最好位于某个略微负的x位置(轴外),并且在y位置的中间位置。
AnnotationBbox(im, (-0.1, 0.5) , xycoords='axes fraction')
完整示例
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3,4,5,6,7],[1,4,2,8,5,7,1])
arr = np.arange(100).reshape((10, 10))
im = OffsetImage(arr, zoom=2)
im.image.axes = ax
xy = (-0.1,0.5 )
ab = AnnotationBbox(im, (-0.1, 0.5), xycoords='axes fraction')
ax.add_artist(ab)
plt.show()