Matplotlib:如何制作任意pyplot图形的散点图

时间:2019-05-26 00:09:16

标签: python matplotlib

这是一个与this相关的问题,受到好评。在该问题中,我看到了有关如何在散点图等不同坐标上绘制图像(或不同图像)的答案。

使用TextArea,我可以在不同的坐标处放一些小字符串而不是图像。

如果我想放一张由matplotlib本身生成的图/图像的迷你版怎么办?假设我要使用image.jpg的结果作为散点图中的图像,而不是使用plt.stem(arr)

我该怎么做?小型的plt.plot(x, y)输出怎么样?

我尝试将链接问题中给出的功能修改为:

def stem_scatter(x, y, arr, ax=None):

    from matplotlib.offsetbox import AnnotationBbox, DrawingArea

    if ax is None:
        ax = plt.gca()
    im = DrawingArea(0.1, 0.1)
    im.add_artist(plt.stem(arr))
    x, y = np.atleast_1d(x, y)
    artists = []
    for x0, y0 in zip(x, y):
        ab = AnnotationBbox(im, (x0, y0), xycoords='data', frameon=False)
        artists.append(ax.add_artist(ab))
    ax.update_datalim(np.column_stack([x, y]))
    ax.autoscale()
    return artists

但这会导致错误: AttributeError: 'StemContainer' object has no attribute 'is_transform_set'

编辑:来自链接的问题:

"…. but the second has a large advantage. The annotation box approach will allow the image to stay at a constant size as you zoom in."

这将是一个可接受的答案中的一项理想功能,因为在放大时希望看到分散点的相对位置。如果散点图图像没有保持固定大小(相对于屏幕,而不是当前轴限制),则放大将无济于事。

1 个答案:

答案 0 :(得分:0)