python kernel crashes on mouse hover over Tkinter window - python

I want to plot graph in jupiter notebook.
When I use the following code
%pylab inline
import numpy as np
x=np.linspace(0,10,40)
plt.plot(x,x**2)
plt.show()
everything works fine but if I change %pylab inline to %pylab tk or %pylab qt an interactive graph in separate window is shown and when I hover the mouse over the window python kernel crashes. Does anyone has idea how to solve this problem and plot graphs in separate windows?
I use Windows 7, Python 3.5.1 from Anaconda 2.4.1 (64-bit) distribution.

If you want matplotlib interactive, i.e. the plots open in a separate window, you will want to execute the first cell of your notebook with the following magic:
%matplotlib
This should load an interactive backend for your system
If you want to work inline:
%matplotlib inline
Then you can run your code, but please, do not use pylab, use numpy and matplotlib.pyplot instead; this will keep your namespaces tidy.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,40)
plt.plot(x, x**2)
plt.show()
To change back end during a session, you may have to restart your kernel in jupyter for the new backend settings to take effect.

Related

Running twice the libraries to have interactive plots on jupyter

Every time I want to have an interactive plot on Jupyter, I have to run the libraries twice. The libraries are as simple as this:
import matplotlib.pyplot as plt
%matplotlib notebook
The first time I make a plot I have a static image (like shown here). If I run again the libraries, the figure is now interactive. Do you know why?
Static image:
Interactive image:
You need to set the backend before importing pyplot. Therefore the order of your command matters. You will need to put any %matplotlib ... command before importing pyplot:
%matplotlib notebook
import matplotlib.pyplot as plt

matplotlib pyplot Invalid DISPLAY variable

While importing and attempting the following:
import matplotlib
from matplotlib import pyplot as plt
plt.plot([1,2,3],[1,4,9])
plt.show()
I get the following error. How do I fix? I am running Python 2.7, and notebook version 4.1.0. Thank you.
RuntimeError: Invalid DISPLAY variable
When running a jupyter notebook on a server, the server may not even be able to display the plot. The usual solution would be to use a non-interactive backend. In case of a jupyter notebook this would be done by adding
%matplotlib inline
at the top of the notebook, such that graphics are shown as png images.

Plot Window Hangs or is Empty in Python

I am having trouble with plots in a Jupyter Notebook in Python 3.5 on Mac OSX. The following code will hang when executed:
import numpy as np
import matplotlib.pyplot as plt
#%matplotlib inline
myfig = plt.plot(range(5))
plt.show()
If I restart the kernel and un-comment '%matplotlib inline', I do get plots to work inline. However, I'd like to be plotting in a separate window.
If I insert the following code at the beginning:
import matplotlib
matplotlib.use('Agg')
then restart the kernel and run, the code will not hang, but nothing will be plotted, no window opened.
Details:
Mac Book Pro running OSX El Capitan
Anaconda Python 3.5 in a Jupyter Notebook
backend is "MacOSX".
There is a post on GitHub mentioning that using Qt4Agg as backend worked...
If it is not available (and if you can), you might want to try using Hombrew to install Python (instead of Anaconda), Qt and/or Gtk with which you'll be able to use matplotlib without problem.

IPython with and Without Notebook Differences

One of the most important improvisations of Python that are my favorites are IPython and IPython Notebook.
I was watching and repeating what's shown in this video and found some issues.
As specified in the video, I use ipython --pylab to launch IPython.
And I use ipython notebook --pylab to launch IPython Notebook.
Issues: scatter() would not work in IPython NoteBook (I get a NameError) but works fine in IPython.
Same is the case with the function rand(). I guess pylab is loaded along with matplotlib, scipy, numpy, random and other essential libraries.
Please tell me if I am wrong. By the way, both my IPython and IPython NoteBook load from my Anaconda Dist., if that means anything.
Also any resource where I can know what all is loaded when I use --pylab would help.
Thanks.
This is what the pylab flag does:
import numpy
import matplotlib
from matplotlib import pylab, mlab, pyplot
np = numpy
plt = pyplot
from IPython.core.pylabtools import figsize, getfigs
from pylab import *
from numpy import *
That said, it is recommended that you launch the notebook without the flag (just ipython notebook) and then run:
%matplotlib inline
For more details see No Pylab Thanks.
Regarding your scatter problem, you should try the following:
%matplotlib inline
import matplotlib.pyplot as plt
plt.scatter([1,2], [1,2])
Here's another example of why you shouldn't use %pylab inline:
Before %pylab inline: bool(all(i for i in range(3))) => False
After %pylab inline: bool(all(i for i in range(3))) => True
The %pylab inline statement imports numpy.all, which has a different behavior. See help(all) before and after %pylab inline to see. Also, try print(', '.join(sorted(globals().keys()))) before & after to see the vast number of things that get imported.
As mentioned by others, %matplotlib inline avoids this and the subsequent subtle / hard-to-find issues that it causes.

in Ipython notebook / Jupyter, Pandas is not displaying the graph I try to plot

I am trying to plot some data using pandas in Ipython Notebook, and while it gives me the object, it doesn't actually plot the graph itself. So it looks like this:
In [7]:
pledge.Amount.plot()
Out[7]:
<matplotlib.axes.AxesSubplot at 0x9397c6c>
The graph should follow after that, but it simply doesn't appear. I have imported matplotlib, so that's not the problem. Is there any other module I need to import?
Note that --pylab is deprecated and has been removed from newer builds of IPython, The recommended way to enable inline plotting in the IPython Notebook is now to run:
%matplotlib inline
import matplotlib.pyplot as plt
See this post from the ipython-dev mailing list for more details.
Edit:Pylab has been deprecated please see the current accepted answer
Ok, It seems the answer is to start ipython notebook with --pylab=inline.
so ipython notebook --pylab=inline
This has it do what I saw earlier and what I wanted it to do.
Sorry about the vague original question.
With your import matplotlib.pyplot as plt just add
plt.show()
and it will show all stored plots.
simple after importing the matplotlib you have execute one magic if you have started the ipython as like this
ipython notebook
%matplotlib inline
run this command everything will be shown perfectly
start ipython with ipython notebook --pylab inline ,then graph will show inline.
import matplotlib as plt
%matplotlib as inline
All you need to do is to import matplotlib.
import matplotlib.pyplot as plt

Categories

Resources