简体   繁体   中英

Interactive mode in matplotlib

I want to dynamically update the scatter plot based on the y-axis data received from a socket connection. I used python matplot lib in interactive mode to do this, but during dynamic updation if i move the window to a different location or minimize the window then the plot updation stops abruptly. How to do this?

I have attached a sample dynamic updation code used here and the same problem appears here also.

import matplotlib.pyplot as plt
import random
import time
items = [25.5,26.7,23.4,22.5,20,13.4,15.6,-12,-16,20]
x = [1,2,3,4,5,6,7,8,9,10]

plt.ion() #  Interactive on

for i in range(1,100):
    plt.title('graph plotting')
    plt.ylabel('temperature') 
    plt.xlabel('time')
    random.shuffle(items)
    plt.plot(x,items,'ob-')
    plt.axis([0, 10, -40, 40])
    plt.draw()
    #time.sleep(2)
    plt.clf()
    plt.close()

This page contains a couple of examples of dynamic plots with matplotlib and wxPython. And here is a version with PyQt.

For this to work, you need to have a main loop for event handling, and your own event handler to redraw the plot when the window is resized or refreshed.

You'll find many examples for this on the web, or in the tutorials.

I think this is best handled by using a UI toolkit (eg wxPython ), not using matplotlib interactive mode. I had a similar question in the past and got some good answers.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM