Matplotlib:y轴上的图像网格不均

时间:2019-07-04 10:11:31

标签: python image matplotlib

我想用matplotlib根据其y值(能量)在y尺度上不均匀地绘制一系列图像(分子轨道)。

我知道可以使用子图来完成图像网格,但这仅限于均匀分布的图像,这不是我想要的。而且,我想要一个y比例尺来表示与每个图像相关的值。

1 个答案:

答案 0 :(得分:2)

您可以使用OffsetImage内的AnnotationBbox将图片放置在您喜欢的任何位置。

import matplotlib.pyplot as plt
from matplotlib.offsetbox import (OffsetImage, AnnotationBbox)

def image(x, y, ax, fname, zoom=0.5):
    """Place image from file `fname` into axes `ax` at position `x,y`."""
    ar = plt.imread(fname)
    im = OffsetImage(ar, zoom=zoom)
    im.image.axes = ax

    ab = AnnotationBbox(im, (x,y), xycoords='data')
    ax.add_artist(ab)


path = "https://upload.wikimedia.org/wikipedia/commons/thumb/"
exts = ["1/15/Hydrogen_eigenstate_n1_l0_m0_wedgecut.png/30px-Hydrogen_eigenstate_n1_l0_m0_wedgecut.png",
        "c/c6/Hydrogen_eigenstate_n2_l1_m0.png/50px-Hydrogen_eigenstate_n2_l1_m0.png",
        "2/21/Hydrogen_eigenstate_n3_l1_m0.png/70px-Hydrogen_eigenstate_n3_l1_m0.png",
        "f/f5/Hydrogen_eigenstate_n3_l1_m-1.png/70px-Hydrogen_eigenstate_n3_l1_m-1.png",
        "6/6a/Hydrogen_eigenstate_n3_l2_m1.png/70px-Hydrogen_eigenstate_n3_l2_m1.png"]

fig, ax = plt.subplots()
ax.axis([-1,5,-1,5])
for i, p in enumerate(exts):
    image(i, i, ax, path+p)

plt.show()

enter image description here