2

I am trying to use following code from sklearn (http://scikit-learn.org/stable/modules/tree.html):

from sklearn.externals.six import StringIO
import pydot 
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf")

I have installed pydot==1.0.2 and when I run this code using Ipython notebook, it gives following error.

InvocationException                       Traceback (most recent call last)
<ipython-input-22-18c25f6a061c> in <module>()
  4 tree.export_graphviz(clf, out_file=dot_data)
  5 graph = pydot.graph_from_dot_data(dot_data.getvalue())
----> 6 graph.write_pdf("iris.pdf")

 /Users/aj/anaconda/lib/python2.7/site-packages/pydot.pyc in <lambda>(path, f,     prog)
 1600             self.__setattr__(
 1601                 'write_'+frmt,
-> 1602                 lambda path, f=frmt, prog=self.prog : self.write(path,         format=f, prog=prog))
1603 
1604             f = self.__dict__['write_'+frmt]

/Users/aj/anaconda/lib/python2.7/site-packages/pydot.pyc in write(self, path, prog, format)
1694             dot_fd.write(self.to_string())
1695         else:
-> 1696             dot_fd.write(self.create(prog, format))
 1697         dot_fd.close()
 1698 

 /Users/aj/anaconda/lib/python2.7/site-packages/pydot.pyc in create(self, prog,  format)
 1794             raise InvocationException(
 1795                 'Program terminated with status: %d. stderr follows: %s'  % (
 -> 1796                     status, stderr_output) )
  1797         elif stderr_output:
  1798             print stderr_output

InvocationException: Program terminated with status: 1. stderr follows: Format: "pdf" not recognized. Use one of

Regardless of the format that I changed it to, it gave the same error. I am running this on Mac OS X Yosemite.

Any suggestion will be greatly appreciate.

Dalija Prasnikar
  • 27,212
  • 44
  • 82
  • 159
user690462
  • 129
  • 1
  • 1
  • 9

1 Answers1

0

This is, in fact, a problem of graphviz. Apparently, it needs XQuartz package (http://xquartz.macosforge.org/landing/) and after installing it, everything worked fine.

user690462
  • 129
  • 1
  • 1
  • 9
  • 2
    in my case installing XQuartz didn't change the error. XQuartz 2.7.7, OS Yosemite. [Here's](https://gist.github.com/srodriguex/f7833049784904805d44) a list of my Python libraries. – srodriguex Mar 20 '15 at 00:21