1

I'm playing around with some large data sets that change as a function of some parameter i can control. I now want to plot the distributions of my data in sub-plots in the same figure. However, since the data is quite large it takes a while to construct the histograms.

So, I would like the sub-plots to be drawn as they are finished a bit like below.

import matplotlib.pyplot as plt
import numpy as np
import numpy.random as npr

Ne=10
MC=1000000
f1d,f2d = plt.figure(),plt.figure()
for Part in range(Ne):
    datax=npr.normal(size=MC)+4*Part/Ne ##Simulates my big data
    datay=npr.normal(size=MC) ##Simulates my big data
    ###The 1d histogram
    sf1d = f1d.add_subplot(1,Ne,Part+1,)    
    sf1d.hist(datax,bins=20,normed=True,histtype='stepfilled',alpha=0.5)
    sf1d.hist(datay,bins=20,normed=True,histtype='stepfilled',alpha=0.5)
    plt.show(block=False)

    ###Some flush argument()

    ###The 2d histogram
    sf2d = f2d.add_subplot(1,Ne,Part+1)
    sf2d.hist2d(datax,datay,bins=20,normed=True)
    plt.show(block=False)

    ###Some flush argument()

However, python will not draw all of the sub-plots in real-time, but will buffer these until the loop has completed. How do I force matplotlib to flush the sub-plots immediately?

2
  • 3
    how about plt.draw? Commented Jan 20, 2016 at 17:04
  • @torn Thank you. Does precisely what i want. Commented Jan 20, 2016 at 17:18

1 Answer 1

1

From the matplotlib docs:

matplotlib.pyplot.draw()

Redraw the current figure.

This is used in interactive mode to update a figure that has been altered, but not automatically re-drawn.

A more object-oriented alternative, given any Figure instance, fig, that was created using a pyplot function, is:

fig.canvas.draw_idle()

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.