标签: pydot

字典对象到Pydot的决策树

我有一个字典对象:

menu = {'dinner':{'chicken':'good','beef':'average','vegetarian':{'tofu':'good','salad':{'caeser':'bad','italian':'average'}},'pork':'bad'}}
Run Code Online (Sandbox Code Playgroud)

我试图使用pydot与"菜单"数据创建一个图表(决策树).

'晚餐'将是顶级节点,其价值(鸡肉,牛肉等)低于它.参考链接,图形函数有两个参数; 源和节点.

它看起来像这样:

"王"将是"晚餐","主"将是"鸡肉","牛肉"等.

我的问题是:如何访问值中的键?要从这些数据创建一个树,我觉得我需要创建一个循环,检查是否有特定键的值并绘制它.我不确定如何调用任何字典对象的值(如果它不一定被称为'晚餐'或具有尽可能多的元素.).

有关如何绘制图表的任何建议吗?

python dictionary machine-learning decision-tree pydot

6
推荐指数
1
解决办法
6038
查看次数

如何使用conda安装pydotplus

我在我的机器上执行以下代码(Win10,python 2.7,Anaconda和Spyder)并见面ImportError: No module named pydotplus.

import networkx as nx
from networkx.drawing.nx_pydot import write_dot
G = nx.DiGraph([(1,2),(2,3),(3,2)])
write_dot(G,'file.dot')
Run Code Online (Sandbox Code Playgroud)

很明显我应该安装pydotplus包.我试着conda install pydotplus直接但是说Error: Package missing in current win-64 channels.然后,我谷歌它但发现没有关于如何在conda上安装它的信息.顺便说一句,我pydot之前已经在conda上安装了.

感谢您提前帮助!

python pydot spyder anaconda conda

6
推荐指数
2
解决办法
4万
查看次数

是否可以在没有中间文件的情况下获得pydot图的输出?

我有一个非常简单的图表,我想绘制为svg.例如:

# graph.dot
graph { 
        a -- b; 
        b -- c; 
    } 
Run Code Online (Sandbox Code Playgroud)

我目前正在使用pydot读取文件,然后生成svg文件,如下所示:

import pydot
graphs = pydot.graph_from_dot_file('graph.dot')
graphs[0].write_svg('graph.svg') # there is only 1 graph so the 0 index.
Run Code Online (Sandbox Code Playgroud)

但是,我需要这样做而不需要中间文件graph.dotgraph.svg.我有graph.dot一个字符串中的代码内容,对应于我需要字符串中的svg输出.

我需要这样的东西:

graph_dot = "... ..." # string, I have this
graph_svg = convert_dot_to_svg(graph_dot) 
# i need something like convert_dot_to_svg()
Run Code Online (Sandbox Code Playgroud)

我的问题不仅限于pydot.如果有人知道我可以做到这一点的web api,那么它也会这样做.

非常感谢,提前.

python svg graphviz pygraphviz pydot

6
推荐指数
1
解决办法
3210
查看次数

`pydot` 调用 GraphViz 失败。请安装 GraphViz 并确保其可执行文件在 $PATH 中

我的 jupyter 服务器在 gcp 深度学习虚拟机中运行。

我正在尝试在 Jupyter 笔记本单元中打印模型。

import os, sys
from utils.models.alexnet import alexnet
from keras.utils.vis_utils import plot_model
from keras.optimizers import SGD

model = alexnet(len(class_names))
model.summary()
plot_model(model, to_file="alexnet_model.png", show_shapes=True)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

`pydot` failed to call GraphViz.Please install GraphViz ([https://www.graphviz.org/](https://www.graphviz.org/)) and ensure that its executables are in the $PATH.
Run Code Online (Sandbox Code Playgroud)

我已经在我的机器上正确安装了 Graphviz

apt-get install graphviz

stat /usr/bin/dot
  File: /usr/bin/dot
  Size: 10568       Blocks: 24         IO Block: 4096   regular file
Device: 801h/2049d  Inode: 142872      Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: ( …
Run Code Online (Sandbox Code Playgroud)

python graphviz pydot jupyter keras

6
推荐指数
1
解决办法
6697
查看次数

pydot图的多行工具提示

我想为我使用pydot生成的图中的节点添加多行工具提示.这是我在做的事情:

node = pydot.Node('abc', style='filled', fillcolor='#CCFF00', fontsize=12)
txt = 'foo' + '\n' + 'test'
node.set_tooltip(txt)
Run Code Online (Sandbox Code Playgroud)

我看到的工具提示显示为"foo \ntest"

我将不胜感激任何帮助.

谢谢Abhijit

graphviz pydot

5
推荐指数
1
解决办法
1559
查看次数

用pydot绘制决策树

我已经训练了一个决定tree(Python字典),如下所示.现在我想用pydot绘制它.在定义树的每个节点(pydot图)时,我为它指定了一个唯一(和详细)的名称和一个简短的标签.

我的问题是,通过写入.png得到的结果,我看到了详细node names而不是node labels.

在这里听了@Martijn Pieters的回答.我不知道我错过了什么,有什么想法吗?

import pydot

tree= {'salary': {'41k-45k': 'junior', '46k-50k': {'department': {'marketing': 'senior', 'sales': 'senior', 'systems': 'junior'}}, '36k-40k': 'senior', '26k-30k': 'junior', '31k-35k': 'junior', '66k-70k': 'senior'}}

def walk_dictionaryv2(graph, dictionary, parent_node=None):
    '''
    Recursive plotting function for the decision tree stored as a dictionary
    '''

    for k in dictionary.keys():

        if parent_node is not None:

            from_name = parent_node.get_name().replace("\"", "") + '_' + str(k)
            from_label = str(k)

            node_from = pydot.Node(from_name, label=from_label)

            graph.add_edge( …
Run Code Online (Sandbox Code Playgroud)

python graphviz decision-tree pydot

5
推荐指数
1
解决办法
6504
查看次数

在png或pdf中可视化scikit-learn/sklearn多输出决策树回归

这是我在stackoverflow上发布的第一个问题所以我为布局中的任何不幸事件道歉等等(建议欢迎).非常感谢您的帮助!

我正在尝试使用多个输出可视化DecisionTreeRegressor的输出(如http://scikit-learn.org/stable/auto_examples/tree/plot_tree_regression_multioutput.html#example-tree-plot-tree-regression-multioutput-py中所述)使用pydot以png或pdf格式.

我试过的代码看起来像这样:

...
dtreg = tree.DecisionTreeRegressor(max_depth=3)
dtreg.fit(x,y)

tree.export_graphviz(dtreg, out_file='tree.dot') #print dotfile

dot_data = StringIO()
tree.export_graphviz(dtreg, out_file=dot_data)
print dot_data.getvalue()
pydot.graph_from_dot_data(dot_data.getvalue()).write_pdf("pydot_try.pdf") 
Run Code Online (Sandbox Code Playgroud)

编写pdf会出现以下错误:

pydot.InvocationException:程序以状态终止:1.stderr跟随:警告:/ tmp/tmpAy7d59:7:字符串超过行尾错误:/ tmp/tmpAy7d59:8:第8行附近的语法错误:>>> [< << 0.20938667]警告:/ tmp/tmpAy7d59:18:字符串跑过行尾警告:/ tmp/tmpAy7d59:20:字符串跑过行尾

等等更多"字符串跑过终点"错误.

我之前从未使用过.dot,但我怀疑多输出格式可能存在问题.例如,树的一部分看起来像这样:

digraph Tree {
0 [label="X[0] <= 56.0000\nmse = 0.0149315126135\nsamples = 41", shape="box"] ;
1 [label="X[0] <= 40.0000\nmse = 0.0137536911947\nsamples = 25", shape="box"] ;
0 -> 1 ;
2 [label="X[0] <= 24.0000\nmse = 0.0152142545276\nsamples = 21", shape="box"] ;
1 -> 2 ;
3 [label="mse = 0.0140\nsamples = 15\nvalue …
Run Code Online (Sandbox Code Playgroud)

python dot decision-tree pydot scikit-learn

5
推荐指数
1
解决办法
1779
查看次数

使用nx.draw_graphviz在python中使用graphviz布局绘制图形会出错

我试图在python的networkx中以graphviz布局绘制一个100节点的多图G,所以到目前为止我进行了两次试验:

试验1 nx.draw_graphviz函数如下,nx.draw_graphviz(G)但是我对图中的所有节点重复了以下错误:

错误:节点1,位置[0.127506302389087,0.3262608552621944],预计两个双打

然后试图找到一个解决方案,我使用试验2 A=nx.to_agraph(G)得到一个pygraphviz图,但当我尝试绘制时,nx.draw_graphviz(A)我得到以下错误:

AttributeError:'AGraph'对象没有属性'number_of_selfloops'

nx.graphviz_layout但它返回了一个由节点键入的位置字典,我不知道如何用它来绘制graphviz布局.

注意我导入了graphviz,pygraphviz和pydot模块,但我不知道哪些是真正需要的,但它仍然不起作用.

是否缺少在graphviz布局中绘制networkx图形的东西?

完整跟踪错误

试验1

Traceback (most recent call last):
  File "main.py", line 102, in <module>
    d.display_graph(sub_normal,NEUTRAL_RANGE)
  File "/home/abdallah/stage/Reputation_system/display.py", line 33, in display_graph
    nx.draw_graphviz(G)
  File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pylab.py", line 982, in draw_graphviz
    pos = nx.drawing.graphviz_layout(G, prog)
  File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 257, in graphviz_layout
    return pydot_layout(G=G,prog=prog,root=root,**kwds)
  File "/usr/local/lib/python2.7/dist-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 277, in pydot_layout
    D=P.create_dot(prog=prog)
  File "/usr/lib/python2.7/dist-packages/pydot.py", line 1802, in <lambda>
    lambda f=frmt, prog=self.prog : self.create(format=f, prog=prog))
  File …
Run Code Online (Sandbox Code Playgroud)

python graphviz networkx pygraphviz pydot

5
推荐指数
1
解决办法
1676
查看次数

keras plot_model告诉我安装pydot

我在Windows 10机器上使用python 3.6.3.我使用pip install安装了pydot和graphviz:

    py -m pip install pydot
    py -m pip install graphviz
Run Code Online (Sandbox Code Playgroud)

我也去了graphviz网站,下载并安装了windows版本:http://www.graphviz.org/Download_windows.php,默认安装到程序文件(x86).但是当我在keras中绘制我的模型时,我仍然得到错误,说我必须安装pydot和graphviz并且导入失败.我可以

    import pydot
    import graphviz
Run Code Online (Sandbox Code Playgroud)

在我的python控制台上就好了,他们没有错误.我还能做些什么来绘制我的神经网络图?

windows graphviz python-3.x pydot keras

5
推荐指数
1
解决办法
5401
查看次数

为流程创建热图

我有个问题。我想创建一个带有热图的流程。查看每个步骤花费了多长时间。我创建了该流程并为各个步骤PyDot创建了一个。dataframe

如何为我的流程创建热图?

计算还应包括每一步的时间。因此,您可以计算边缘时间,例如task1_start - start/task2_start - task1_end 并且您可以计算节点时间,例如task1_end - task1_start/ task2_end - task2_start

我的 MVP 只改变边框的颜色。但我想创建一个真正的热图。

在此输入图像描述

过程

import pydot
from IPython.display import SVG

graph = pydot.Dot(graph_type='digraph')

task_node1 = pydot.Node("Task1", shape="box",)
task_node2 = pydot.Node("Task2", shape="box",)



graph.add_node(task_node1)
graph.add_node(task_node2)


task1_to_task2_edge = pydot.Edge("Task1", "Task2",)


graph.add_edge(task1_to_task2_edge)


graph.write_svg("diagram.svg")
SVG('diagram.svg')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

数据框


   id         step   timestamp
0   1  task1_start  2023-01-01
1   1    task1_End  2023-01-05
2   1  task2_start  2023-01-10
3   1    task2_end  2023-01-12
4   2  task1_start  2023-01-01
5   2    task1_End  2023-01-05 …
Run Code Online (Sandbox Code Playgroud)

python svg pydot pandas

5
推荐指数
1
解决办法
206
查看次数