我正在尝试使用现有图表作为我想在图表顶部绘制的新数据的背景。 当使用包含轴内所有信息的图表并使用
extent
的 plt.imshow
参数时,我已经能够做到这一点,因为这样我只需缩放图像即可。
我想缩放和移动背景图。在实际用例中,重新绘制背景不是一个选项。
这是我迄今为止尝试过的:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 5, 10], [8, 5, 12])
ax.set_xlim(0, 20)
ax.set_ylim(0, 15)
ax.set_title('Background graph')
fig.show()
fig.savefig('bg_graph.png')
plt.imshow()
添加背景图,然后叠加我的数据。bg_img = plt.imread('bg_graph.png')
fig, ax = plt.subplots()
ax.imshow(bg_img, extent=[0,50,0,50])
ax.scatter([4.9, 5.2], [7, 4.9])
fig.show()
fig.savefig('result.png')
是否有一种方法可以将新图形拉伸到现有轴(来自图像)以绘制新数据?我假设图像中轴的坐标是已知的或者可以通过试错来猜测。重新表述这一点的一种方法是说我想将新的绘图延伸到图像,而不是相反。
我能够产生与您所描述的类似的结果,希望这就是您正在寻找的:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
fig, ax = plt.subplots()
ax.plot([0, 5, 10], [8, 5, 12])
ax.set_xlim(0, 20)
ax.set_ylim(0, 15)
ax.axis('off')
fig.savefig('bg_graph.png', bbox_inches='tight', pad_inches=0, transparent=True)
plt.close(fig)
bg_img = mpimg.imread('bg_graph.png')
fig, ax = plt.subplots()
ax.imshow(bg_img, extent=[0, 20, 0, 15], aspect='auto')
ax.scatter([4.9, 5.2], [7, 4.9], color='red', label="New Data Points")
ax.set_xlim(0, 20)
ax.set_ylim(0, 15)
ax.set_title('Superimposed Graph')
ax.legend()
plt.show()
fig.savefig('superimposed_result.png')