当前位置: 首页 > 知识库问答 >
问题:

在python中,在同一个图形上绘制多个图像

陶树
2023-03-14

使用matplotlib时,我可以使用{importmatplotlib.pyplotas plt}plt.imshow(Image1);plt.pause(0.6);plt.imshow(Image2)因为我使用Tkinter,所以我也会使用PicreCanvasTkAgg来做同样的事情

   `f = Figure(figsize=(6,6))

    a = f.add_subplot(111)
    image = np.array(np.random.random((1024,1024))*100,dtype=int)
    a.imshow(image)

    canvas = FigureCanvasTkAgg(f, self)
    canvas.show()
    canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)`

有人能帮我在如何实现matplotlib的停顿效果在菲格勒CanvasTkAgg。

共有1个答案

梁丘赞
2023-03-14

您可以使用线程模块来计划函数的执行:

from threading import Thread

def wrapper():
    time.sleep(5)
    image = np.array(np.random.random((1024,1024))*100,dtype=int)
    ax.imshow(image)
    canvas.draw()

_t = Thread(target=wrapper)
_t.start()

这将在新线程中执行函数包装器,以便原始程序可以同时继续运行。

以下是完整示例:

#!/usr/bin/env python
import time
import tkinter as tk
from threading import Thread
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np

root = tk.Tk()
f = Figure(figsize=(6,6))

ax = f.add_subplot(111)
# First image    
image = np.array(np.random.random((1024,1024))*100, dtype=int)
ax.imshow(image)

canvas = FigureCanvasTkAgg(f, root)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)

def wrapper():
    time.sleep(5)
    # Second image appears after 5 seconds
    image = np.array(np.random.random((1024,1024))*100,dtype=int)
    ax.imshow(image)
    canvas.draw()

_t = Thread(target=wrapper)
_t.start()

root.mainloop()
 类似资料:
  • 我试图将多个图形绘制到一个PDF,但它会生成损坏的PDF。 我应该如何修改上面的代码,以便我在一个PDF文件中成功地获得4个图。

  • 我正在制作一个类似飞鸟的飞机游戏,在一个类中,我有移动的背景,然后我将其添加到主jPanel中,它在自己的类中,在另一个类中,我有玩家,我将其添加到主jPanel中。但是,当我将第二个类添加到JPanel时,我添加的第一个类将消失。这是我的背景课: 这是我的平面类:导入java.awt.图形;导入java.awt.event.动作事件;导入java.awt.event.动作监听器;导入java.a

  • 我正在学习python,而我一直坚持的是基于FLT列绘制一个直方图来指示每个过滤器。我有这个数据框: 我的目标是绘制FLT列,但要指示不同的过滤器:g、i、r和z。通过搜索如何绘制直方图,我可以根据MAG(幅值)绘制基本的直方图。理想情况下,我想要的是4种不同的颜色来表示不同的过滤器。我知道该图将有重叠的磁过滤器,但我同意它,因为我需要一个视觉,我可以放大,如果我有必要。 下面的代码是我现在拥有的

  • 问题内容: 我是python的新手,正在尝试使用matplotlib在同一图中绘制多条线。我的Y轴的值存储在字典中,并在下面的代码中在X轴中进行相应的值 我的代码是这样的: 但是我得到的是一个单独的图,一个图一个图。有人可以帮助我弄清楚我们的代码有什么问题吗?为什么不能生成多条线图?非常感谢! 问题答案: 这很简单: 您可以随意添加多次。至于,您需要首先指定颜色。所以对于蓝色,它是。对于正常的线是

  • 问题内容: 我开始学习一些用于数据分析的python(使用R)。我正在尝试使用创建两个图,但它始终将第二个保存在第一个上。如何停止这种行为? 问题答案: 为此,您必须开始一个新的图形。假设您有,有多种方法可以做到这一点。也摆脱它,您可以从那里使用。 方法1 采用 方法2 每个人之前致电

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 我想用Java绘制图形(节点和边)。但是,由于我不知道该怎么做,因此在开始之前我想寻求一些建议。 我应该怎么做? 使用Graphics2D包,对吗? 节点的标签怎么样?我应该使用诸如drawString之类的东西并手动处理所有“