Natural Language Processing with Python .dispersion_plot returns nothing

Peter Otten __peter__ at web.de
Mon Jun 17 13:42:00 EDT 2013


sixtyfourbit wrote:

> I'm in the first chapter of Natural Language Processing with Python and am
> trying to run the example .dispersion_plot. I am using Python 2.7.4
> (Anaconda) on Mac OSX 10.8.
> 
> When I load all of the necessary modules and try to create the dispersion
> plott, I get no return - no plot, no error message, not even a new >>>
> prompt, just a blinking cursor under the last line I typed. Here is what
> I've been doing:
> 
> [~]:  python
> Python 2.7.4 |Anaconda 1.5.1 (x86_64)| (default, May  9 2013, 12:12:00)
> [GCC 4.0.1 (Apple Inc. build 5493)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import numpy
>>>> import matplotlib
>>>> import nltk
>>>> from nltk.book import *
> *** Introductory Examples for the NLTK Book ***
> Loading text1, ..., text9 and sent1, ..., sent9
> Type the name of the text or sentence to view it.
> Type: 'texts()' or 'sents()' to list the materials.
> text1: Moby Dick by Herman Melville 1851
> text2: Sense and Sensibility by Jane Austen 1811
> text3: The Book of Genesis
> text4: Inaugural Address Corpus
> text5: Chat Corpus
> text6: Monty Python and the Holy Grail
> text7: Wall Street Journal
> text8: Personals Corpus
> text9: The Man Who Was Thursday by G . K . Chesterton 1908
>>>> text4.dispersion_plot(["citizens", "democracy", "freedom", "duties",
>>>> "America"])
> 
> ...and nothing. I can't paste it but my cursor is just blinking under my
> last command with no prompt. So far the other example commands from the
> chapter (e.g. .concordance) work fine, so I'm guessing the problem is
> something with numpy or matplotlib. I had a heck of a time getting
> matplotlib installed correctly (kept getting errors saying that it wasn't
> installed even when I had installed it), but since switching to the
> Anaconda distro, which had those prepackaged, I haven't gotten any module
> errors.
> 
> Any advice??

The dispersion_plot() method uses pylab.show() to display the data (in 
another window). Only when you close that window the interactive interpreter 
becomes responsive again.

If you didn't overlook that window: do you run into the same problem with

>>> import pylab
>>> pylab.plot([1, 2, 3], [3, 1, 2])
[<matplotlib.lines.Line2D object at 0x2d713d0>]
>>> pylab.show()

? If so, choose another backend. I've not tried, but it seems straight-
forward, see <http://matplotlib.org/faq/usage_faq.html#what-is-a-backend>





More information about the Python-list mailing list