matplotlib for循环Python中图像上的叠加图

eqoofvh9  于 2023-01-26  发布在  Python
关注(0)|答案(2)|浏览(299)

我尝试使用以下代码片段在图像上覆盖matplotlib图。

plt.imshow(image, zorder=0)
plt.plot(some_array, zorder=1)
plt.savefig('image_array.png')

如果我现在在for循环中包含这段代码,以便在每个循环中在不同的图像上覆盖一个图,则生成的图像会重叠。例如,image_array2.png位于image_array1.png之上,等等。如何正确保存图形而不重叠?

ikfrs5lh

ikfrs5lh1#

for i in range(number_of_images):
    plt.imshow(image[i], zorder=0)
    plt.plot(some_array[i], zorder=1)
    plt.savefig('image_array' + str(i) + '.png')
    plt.clf()

如果你试图用for循环在不同的图像上保存多个绘图,这些绘图最终会重叠。但别担心,有一种方法可以解决这个问题。你可以在创建下一个绘图之前添加一行代码,名为'plt.clf()'。这行代码清除当前图形,这样你创建的下一个绘图就不会与前一个重叠。

fig, ax = plt.subplots(1, number_of_images)
for i in range(number_of_images):
    ax[i].imshow(image[i], zorder=0)
    ax[i].plot(some_array[i], zorder=1)
plt.savefig('image_array.png')

也可以使用matplot子图法。

nlejzf6q

nlejzf6q2#

import matplotlib.pyplot as plt
import numpy as np

# load image
img = plt.imread("image.jpg")

# loop through your data
for i in range(5):
    x = np.random.rand(10)
    y = np.random.rand(10)

    # create a new figure
    plt.figure()
    plt.imshow(img)
    plt.axis('off')
    # plot the data on top of the image
    plt.plot(x, y, 'o-', color='r')
    plt.title('Plot {}'.format(i))
    plt.show()

相关问题