I am attempting to use Graphviz from Spyder (via an Anaconda install). I am having trouble understanding what is needed to do this and how to go about loading packages, setting variables, etc.
I straight forward approach for a new Python and Graphviz and Spyder user would be great!
Also, apart from just creating and running Graphviz, how can one run Graphviz from python with a pre-generated .gv file?
With x64 version, you may have to run dot -c (with with Administrator Right) in a command line to finalize the installation, like in the following example: To retrieve dot.exe , PlantUML scans your c:\ drive and search for c:\*\graphviz*\bin\dot.exe or c:\*\graphviz*\release\bin\dot.exe .
Here are the steps that worked for me. Much of this information was available but spread out in several different StackOverflow posts and other websites. I hope that this serves as a good one-stop resource.
Go to the Graphviz website and download and install to your computer (do NOT need to install for all users).
Download and install Anaconda3.5 from the Continuum website.
Add Graphviz to the environment variable "Path":
Computer > Properties > Advanced system settings > Environment Variables
and then find "Path" in the system variables box. Click on Path and click edit.;C:\Program Files (x86)\Graphviz2.38\bin
to the end of the many paths that are already present in Path. Note, the path to Graphviz may be different for you so make sure to put the correct path. The folder "bin" should have many files including the dot.exe
application.dot -V
this should return the version of Graphviz installed. For example, dot - graphviz version 2.38.0
. If this does not work, enter set
and look for the Graphviz path.Go to the Anaconda command prompt and enter: pip install graphviz
Restart Spyder or launch it if not already open.
Now within your Python script add import graphviz
Below is an example of how to create a graph and render it using Graphviz from a Graphviz tutorial
import graphviz
dot = graphviz.Digraph(comment='The Round Table')
dot.node('A', 'King Arthur')
dot.node('B', 'Sir Bedevere the Wise')
dot.node('L', 'Sir Lancelot the Brave')
dot.edges(['AB', 'AL'])
dot.edge('B', 'L', constraint='false')
dot.render('FileName', view=True)
Below is an example of how to create a graph from a pre-generated .gv file (at least a starting point for exploration)
from graphviz import Source
Source.from_file('file.gv')
Usefull Links:
Getting started with Graphviz and Python
Graphviz Attributes
Dot Guide
Another StackOverflow Question
Versions Used:
Anaconda 3.5 (comes with Spyder)
Graphviz 2.38
I gave a bounty to the other question, but then realized there's a better way:
conda install graphviz
installs the binaries for GraphViz,
(So you don't need to visit GraphViz website, and they'll presumably be kept updated in the usual conda way.)conda install python-graphviz
installs the Python frontend for GraphViz. (This is the same as pip install graphviz
, which has led to great confusion.)The conda version of the graphviz frontend has been patched to support the binaries installed by the conda graphviz
package, so for graphviz itself, this should be all you need.
For pydot
, however, in Windows, this will not work until you include these binaries in your PATH. You can do this temporarily within your script with:
import os
os.environ["PATH"] += os.pathsep + 'PATH_STRING'
before the command that calls pydot
.
The PATH_STRING is either C:\Anaconda3\envs\ENV_NAME\Library\bin\graphviz
for a specific conda environment, or C:\Anaconda3\Library\bin\graphviz
for the default environment.
(I had to install a py3.6 environment for Tensorflow, since it doesn't yet support py3.7 and conda install tensorflow
was hanging for hours, trying to figure out how to downgrade every package on my system. (Probably other people installing GraphViz are doing so for the same reason.))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With