Graphviz.Source无法在Jupyter Notebook中呈现

时间:2016-10-27 22:12:41

标签: scikit-learn ipython graphviz jupyter-notebook

使用scikit-learn的方便export_graphviz功能导出.dot文件后。

我正在尝试使用Graphviz将点文件渲染到我的Jupyter笔记本中的单元格中:

import graphviz
from IPython.display import display

with open("tree_1.dot") as f:
    dot_graph = f.read()
display(graphviz.Source(dot_graph))

然而out []只是一个空单元格。

我正在使用graphviz 0.5(pip然后安装conda),iPython 5.1和Python 3.5 点文件看起来正确这里是第一个字符:

digraph Tree {\nnode [shape=box, style="filled", color=

iPython显示似乎适用于其他对象,包括Matplotlib图和Pandas数据帧。

我应该注意Graphviz'上的例子。 site也不起作用。

5 个答案:

答案 0 :(得分:6)

自发布此内容以来,可能会进行更改,因此您可能希望在可能的情况下更新库。

我使用的相关版本是:

Python 2.7.10

IPython 5.1.0

graphviz 0.7.1

如果你有一个格式良好的.dot文件,你可以通过以下方式将它显示在jupyter out [。]单元格中:

import graphviz

with open("tree_1.dot") as f:
    dot_graph = f.read()

# remove the display(...)

graphviz.Source(dot_graph)

答案 1 :(得分:2)

graphviz.Source(dot_graph).view()

答案 2 :(得分:2)

此解决方案允许您直接插入 DOT 文本(无需先将其保存到文件中)

# convert a DOT source into graph directly
import graphviz 
from IPython.display import display
    
source= '''\
digraph sample {
A[label="AL"]
B[label="BL"]
C[label="CL"]
A->B
B->C 
B->D
D->C
C->A
}
'''
print (source)
gvz=graphviz.Source(source)
# produce PDF
#gvz.view()
print (gvz.source)
display(gvz)

答案 3 :(得分:1)

尝试使用pydotplus。

import pydotplus

by(1.1)从外部导入.dot

pydot_graph = pydotplus.graph_from_dot_file("clf.dot")

或(1.2)直接使用.export_graphviz输出

dt = tree.DecisionTreeClassifier()
dt = clf.fit(x,y)
dt_graphviz = tree.export_graphviz(dt, out_file = None)

pydot_graph = pydotplus.graph_from_dot_data(dt_graphviz)

(2。)然后使用

显示pyplot图
from IPython.display import Image

Image(pydot_graph.create_png())

答案 4 :(得分:1)

尝试重新安装graphviz

conda remove graphviz
conda install python-graphviz
graphviz.Source(dot_graph).view()