You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在基于set_ydata的Tkinter-Matplotlib绘图中添加第二条曲线?

如何在Tkinter的Matplotlib动态图中添加第二条曲线?

要在同一张图里加第二条动态曲线,核心思路是初始化时多创建一个线对象,之后在更新函数里分别更新两条线的y轴数据就行。另外你的原代码里还有几个小问题需要修正:比如array_pressure_1未定义、重复触发update_plot导致重复更新。

下面是修改后的完整代码:

import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg,
NavigationToolbar2Tk)
import numpy as np

stroke=30
conrod=75
bore=40

def update_plot():
    # 生成两条曲线的新随机数据
    y1 = 100 * np.random.rand(50)
    y2 = 60 * np.random.rand(50)
    # 更新第一条曲线的y数据
    lines[0].set_ydata(y1)
    # 更新第二条曲线的y数据
    lines[1].set_ydata(y2)
    # 重绘画布
    canvas.draw()    
    window.after(25, update_plot)  # 25ms后再次更新,约40FPS
    
def main():
    global window
    global canvas
    global lines
    
    x = np.linspace(0, stroke, 50)
    # 初始化两条曲线的初始y数据
    y1_initial = 100 * np.random.rand(50)
    y2_initial = 60 * np.random.rand(50)

    window = tk.Tk()
    window.title('Plotting in Tkinter')
    window.geometry("500x500")

    fig = Figure(figsize = (4, 4), dpi = 100)
    canvas = FigureCanvasTkAgg(fig, master = window)
    canvas.draw()
    canvas.get_tk_widget().pack()

    plot1 = fig.add_subplot(111)
    # 绘制两条曲线,lines会存储两个线对象
    lines1, = plot1.plot(x, y1_initial, label='曲线1')
    lines2, = plot1.plot(x, y2_initial, label='曲线2')
    lines = [lines1, lines2]
    # 添加图例区分两条曲线
    plot1.legend()

    # 只需要调用一次after来启动更新循环,不需要直接调用update_plot
    window.after(25, update_plot)

    window.mainloop()
    
if __name__ == '__main__':
    main()

关键修改点:

  • 初始化时绘制两条曲线,把两个线对象存入lines列表
  • 在update_plot中分别更新两条线的ydata
  • 移除了重复调用update_plot的代码,避免重复触发更新
  • 添加了图例,方便区分两条曲线
  • 修复了原代码中未定义变量的问题

内容的提问来源于stack exchange,提问作者Riccardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 01:06:25