I am plotting a NumPy array of values, I, using IPython notebook in %matplotlib inline mode with the plot command plt.plot(I,'o').

The resulting output is:

<matplotlib.figure.Figure at 0x119e6ead0>
[<matplotlib.lines.Line2D at 0x11ac57090>,
 <matplotlib.lines.Line2D at 0x11ac57310>,
 <matplotlib.lines.Line2D at 0x11ac57510>,
 <matplotlib.lines.Line2D at 0x11ac57690>,
 <matplotlib.lines.Line2D at 0x11ac57810>,
 <matplotlib.lines.Line2D at 0x11ac57990>,
 <matplotlib.lines.Line2D at 0x11ac57b10>,

Then my plot shows up below these lines of output.

Is there a way to just show the plot and hide the <matplotlib.lines.Line2D at ...> from the output?

You can use a semi-colon ; to end the line. This suppresses the unwanted output when generating plots:


In general, using a semi-colon stops IPython from printing any output value from that line of a code block. For example, the executing the cell containing the code 1+1; would not output 2.

An alternative way would be to bind a variable to the plot:

_ = plt.plot(a)

This way, IPython only shows you the plots and the name _ is bound to the unwanted output.

Another way is to just write plt.show() at the end of your drawing code. It would take less symbols to type if you’re generating many subplots and/or drawing many plots on a single subplot.

Old question…
Well I prefer to use a pass in the last line.

Not so small like ;, but, IMHO, more legible and yet short.