title: Not able to plot graph: matplotlib is needed for plotting
body: <p>I am able to generate *.dat file:</p>
  
  <pre><code>vikas@server:~/memory_profiler-0.36$ ./mprof run --python test_sl.py 
  vikas@server:~/memory_profiler-0.36$ ls *.dat
  mprofile_20151001035123.dat
  </code></pre>
  
  <p>But when I am trying to plot graph then it is saying "matplotlib is needed for plotting"</p>
  
  <pre><code>vikas@server:~/memory_profiler-0.36$ ./mprof plot --output=plot.png 
  matplotlib is needed for plotting.
  </code></pre>
  
  <p>Did I miss anything?</p>
  
  <p>Function I am profiling is run() which is inside: file_to_be_profiled.py</p>
  
  <pre><code>#!/usr/bin/python
  
  import time
  import os, sys, commands
  from memory_profiler import profile
  from guppy import hpy
  
  @profile
  def run():
      d = {}
      l = []
      hp = hpy()
      before = hp.heap()
  
      d["k1"] = 'val1'
      d["k2"] = 10
      count = 0
      while (count &lt; 9):
          l.append(count)
          print 'The count is:', count
          count = count + 1
      print "Good bye!"
      after = hp.heap()
      leftover = after - before
      print leftover
  
  if __name__ == '__main__':
      sys.exit(run())
  </code></pre>
  
  <p>And I am invoking run() from my test script: test_sl.py:</p>
  
  <pre><code>#!/usr/bin/python
  
  import commands
  
  # for the time being I am running my test to profile method: run() inside file_to_be_profiled.py
  run_cmd = './file_to_be_profiled.py
  commands.getstatusoutput(run_cmd)
  </code></pre>
  
  <p>I am running on ubuntu machine. But apt-get install did not worked for me. Then I did the install from source. But then also I am getting same error. </p>
  
  <p>apt-get failed:</p>
  
  <pre><code>vikas@server:~/memory_profiler-0.36$ sudo apt-get install -y python-matplotlib
  [sudo] password for vikaskuk:
  Reading package lists... Done
  Building dependency tree
  Reading state information... Done
  Package python-matplotlib is not available, but is referred to by another package.
  
  This may mean that the package is missing, has been obsoleted, or
  is only available from another source
  
  E: Package 'python-matplotlib' has no installation candidate
  vikask@server:~/memory_profiler-0.36$ ./mprof plot --output=plot.png
  matplotlib is needed for plotting.
  </code></pre>
  
  <p>Then I attempted pip install... which also did not go through:</p>
  
  <pre><code>vikas@server:~/memory_profiler-0.36$ pip install matplotlib
  Downloading/unpacking matplotlib
    Cannot fetch index base URL https://pypi.python.org/simple/
    Could not find any downloads that satisfy the requirement matplotlib
  Cleaning up...
  No distributions at all found for matplotlib
  Storing debug log for failure in /home/vikaskuk/.pip/pip.log
  </code></pre>
  
  <p>Finally I tried installing from source which seems to be succeeded:</p>
  
  <pre><code>vikas@server:~/memory_profiler-0.36$ cd ../matplotlib
  vikas@server:~/matplotlib$ cd matplotlib-master/
  
  (virtualenv)vikaskuk@beehive:~/matplotlib/matplotlib-master$ vi INSTALL
  (virtualenv)vikaskuk@beehive:~/matplotlib/matplotlib-master$ python setup.py build
  ============================================================================
  Edit setup.cfg to change the build options
  
  BUILDING MATPLOTLIB
              matplotlib: yes [1.5.dev1]
                  python: yes [2.6.6 (r266:84292, Sep 15 2010, 16:22:56)  [GCC
                          4.4.5]]
                platform: yes [linux2]
  
  REQUIRED DEPENDENCIES AND EXTENSIONS
                   numpy: yes [not found. pip may install it below.]
                     six: yes [using six version 1.5.2]
                dateutil: yes [using dateutil version 2.1]
                    pytz: yes [pytz was not found. pip will attempt to install
                          it after matplotlib.]
                 tornado: yes [tornado was not found. It is required for the
                          WebAgg backend. pip/easy_install may attempt to
                          install it after matplotlib.]
               pyparsing: yes [pyparsing was not found. It is required for
                          mathtext support. pip/easy_install may attempt to
                          install it after matplotlib.]
                  libagg: yes [pkg-config information for 'libagg' could not
                          be found. Using local copy.]
                freetype: no  [The C/C++ header for freetype2 (ft2build.h)
                          could not be found.  You may need to install the
                          development package.]
                     png: no  [pkg-config information for 'libpng' could not
                          be found.]
                   qhull: yes [pkg-config information for 'qhull' could not be
                          found. Using local copy.]
  
  OPTIONAL SUBPACKAGES
             sample_data: yes [installing]
                toolkits: yes [installing]
                   tests: yes [using nose version 1.3.0 / using mock 1.0.1]
          toolkits_tests: yes [using nose version 1.3.0 / using mock 1.0.1]
  
  OPTIONAL BACKEND EXTENSIONS
                  macosx: no  [Mac OS-X only]
                  qt5agg: no  [PyQt5 not found]
                  qt4agg: no  [PySide not found; PyQt4 not found]
                 gtk3agg: no  [Requires pygobject to be installed.]
               gtk3cairo: no  [Requires cairocffi or pycairo to be installed.]
                  gtkagg: no  [Requires pygtk]
                   tkagg: no  [The C/C++ header for Tk (tk.h) could not be
                          found.  You may need to install the development
                          package.]
                   wxagg: no  [requires wxPython]
                     gtk: no  [Requires pygtk]
                     agg: yes [installing]
                   cairo: no  [cairocffi or pycairo not found]
               windowing: no  [Microsoft Windows only]
  
  OPTIONAL LATEX DEPENDENCIES
                  dvipng: no
             ghostscript: yes [version 8.71]
                   latex: yes [version 3.1415926]
                 pdftops: no
  
  ============================================================================
                          * The following required packages can not be built:
                          * freetype, png
  (virtualenv)vikaskuk@beehive:~/matplotlib/matplotlib-master$ python setup.py install
  ============================================================================
  Edit setup.cfg to change the build options
  
  BUILDING MATPLOTLIB
              matplotlib: yes [1.5.dev1]
                  python: yes [2.6.6 (r266:84292, Sep 15 2010, 16:22:56)  [GCC
                          4.4.5]]
                platform: yes [linux2]
  
  REQUIRED DEPENDENCIES AND EXTENSIONS
                   numpy: yes [not found. pip may install it below.]
                     six: yes [using six version 1.5.2]
                dateutil: yes [using dateutil version 2.1]
                    pytz: yes [pytz was not found. pip will attempt to install
                          it after matplotlib.]
                 tornado: yes [tornado was not found. It is required for the
                          WebAgg backend. pip/easy_install may attempt to
                          install it after matplotlib.]
               pyparsing: yes [pyparsing was not found. It is required for
                          mathtext support. pip/easy_install may attempt to
                          install it after matplotlib.]
                  libagg: yes [pkg-config information for 'libagg' could not
                          be found. Using local copy.]
                freetype: no  [The C/C++ header for freetype2 (ft2build.h)
                          could not be found.  You may need to install the
                          development package.]
                     png: no  [pkg-config information for 'libpng' could not
                          be found.]
                   qhull: yes [pkg-config information for 'qhull' could not be
                          found. Using local copy.]
  
  OPTIONAL SUBPACKAGES
             sample_data: yes [installing]
                toolkits: yes [installing]
                   tests: yes [using nose version 1.3.0 / using mock 1.0.1]
          toolkits_tests: yes [using nose version 1.3.0 / using mock 1.0.1]
  
  OPTIONAL BACKEND EXTENSIONS
                  macosx: no  [Mac OS-X only]
                  qt5agg: no  [PyQt5 not found]
                  qt4agg: no  [PySide not found; PyQt4 not found]
                 gtk3agg: no  [Requires pygobject to be installed.]
               gtk3cairo: no  [Requires cairocffi or pycairo to be installed.]
                  gtkagg: no  [Requires pygtk]
                   tkagg: no  [The C/C++ header for Tk (tk.h) could not be
                          found.  You may need to install the development
                          package.]
                   wxagg: no  [requires wxPython]
                     gtk: no  [Requires pygtk]
                     agg: yes [installing]
                   cairo: no  [cairocffi or pycairo not found]
               windowing: no  [Microsoft Windows only]
  
  OPTIONAL LATEX DEPENDENCIES
                  dvipng: no
             ghostscript: yes [version 8.71]
                   latex: yes [version 3.1415926]
                 pdftops: no
  
  ============================================================================
                          * The following required packages can not be built:
                          * freetype, png
  </code></pre>
  
  <p>But when I try to plot the graph I hit the original issue:</p>
  
  <pre><code>vikas@server:~/matplotlib/matplotlib-master$ cd ../../memory_profiler-0.36
  vikas@server:~/memory_profiler-0.36$ ./mprof plot --output=plot.png 
  matplotlib is needed for plotting.
  </code></pre>
  
  <p>I was able to successfully do apt-get update(there was some firewall issue and then I successfully did: sudo apt-get install -y python-matplotlib.</p>
  
  <p>But still I am getting some issue while running mprof:</p>
  
  <pre><code>vikas@server:~/memory_profiler-0.36$ ./mprof plot --output=plot.png
  Using last profile data.
  Traceback (most recent call last):
    File "./mprof", line 494, in &lt;module&gt;
      actions[get_action()]()
    File "./mprof", line 454, in plot_action
      pl.figure(figsize=(14, 6), dpi=90)
    File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 423, in figure
      **kwargs)
    File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 79, in new_figure_manager
      return new_figure_manager_given_figure(num, figure)
    File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 87, in new_figure_manager_given_figure
      window = Tk.Tk()
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __init__
      self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
  _tkinter.TclError: no display name and no $DISPLAY environment variable
  </code></pre>
  
  <p>Why do I need to set the display? I am working on ubuntu hosted machine.</p>