> 백엔드 개발 > 파이썬 튜토리얼 > 시간 척도를 변경한 후 Tkinter 애플리케이션에서 Matplotlib 플롯을 효율적으로 업데이트하려면 어떻게 해야 합니까?

시간 척도를 변경한 후 Tkinter 애플리케이션에서 Matplotlib 플롯을 효율적으로 업데이트하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-09 07:10:08
원래의
186명이 탐색했습니다.

How Can I Efficiently Update Matplotlib Plots in a Tkinter Application After Changing the Time Scale?

Tkinter용 Matplotlib에서 플롯 업데이트

Tkinter 애플리케이션 내에서 Matplotlib의 플롯을 업데이트하는 데 어려움을 겪었습니다. 사용자가 시간 단위를 조정할 수 있도록 허용하므로 새 플롯을 생성하지 않고도 플롯을 다시 계산하고 업데이트해야 합니다.

접근 방식 1: 지우기 및 다시 플롯

간단합니다. 방법은 graph1.clear() 및 graph2.clear()를 호출하여 기존 플롯을 지운 다음 데이터를 다시 그리는 것입니다. 더 간단하지만 속도도 느립니다.

접근 방식 2: 플롯 데이터 업데이트

훨씬 더 빠른 대체 접근 방식은 기존 플롯 객체의 데이터를 업데이트하는 것입니다. 이를 위해서는 코드를 약간 조정해야 합니다.

def plots():
    global vlgaBuffSorted
    cntr()

    result = collections.defaultdict(list)
    for d in vlgaBuffSorted:
        result[d['event']].append(d)

    result_list = result.values()

    f = Figure()
    graph1 = f.add_subplot(211)
    graph2 = f.add_subplot(212, sharex=graph1)

    # Create plot objects
    vds_line, = graph1.plot([], [], 'bo', label='a')
    vgs_line, = graph1.plot([], [], 'rp', label='b')
    isub_line, = graph2.plot([], [], 'b-', label='c')

    for item in result_list:
        # Update plot data
        vds_line.set_data([], [])
        vgs_line.set_data([], [])
        isub_line.set_data([], [])

        tL = []
        vgsL = []
        vdsL = []
        isubL = []
        for dict in item:
            tL.append(dict['time'])
            vgsL.append(dict['vgs'])
            vdsL.append(dict['vds'])
            isubL.append(dict['isub'])

        # Update plot data
        vds_line.set_data(tL, vdsL)
        vgs_line.set_data(tL, vgsL)
        isub_line.set_data(tL, isubL)

    # Draw the plot
    f.canvas.draw()
    f.canvas.flush_events()
로그인 후 복사

이 접근 방식에서는 플롯 객체(예: vds_line)를 생성한 다음 반복할 때마다 해당 데이터를 업데이트합니다. draw() 및 flash_events() 메소드는 Tkinter 창에 업데이트된 플롯을 표시하는 데 사용됩니다.

적절한 접근 방식을 선택하면 Tkinter 애플리케이션 내 Matplotlib의 플롯을 효과적으로 업데이트할 수 있습니다.

위 내용은 시간 척도를 변경한 후 Tkinter 애플리케이션에서 Matplotlib 플롯을 효율적으로 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿