我有一个字典对象:
menu = {'dinner':{'chicken':'good','beef':'average','vegetarian':{'tofu':'good','salad':{'caeser':'bad','italian':'average'}},'pork':'bad'}}
Run Code Online (Sandbox Code Playgroud)
我试图使用pydot与"菜单"数据创建一个图表(决策树)此.
'晚餐'将是顶级节点,其价值(鸡肉,牛肉等)低于它.参考链接,图形函数有两个参数; 源和节点.
它看起来像这样:
"王"将是"晚餐","主"将是"鸡肉","牛肉"等.
我的问题是:如何访问值中的键?要从这些数据创建一个树,我觉得我需要创建一个循环,检查是否有特定键的值并绘制它.我不确定如何调用任何字典对象的值(如果它不一定被称为'晚餐'或具有尽可能多的元素.).
有关如何绘制图表的任何建议吗?
我在我的机器上执行以下代码(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上安装了.
感谢您提前帮助!
我有一个非常简单的图表,我想绘制为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.dot和graph.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,那么它也会这样做.
非常感谢,提前.
我的 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) 我想为我使用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
我已经训练了一个决定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) 这是我在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的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) 我在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控制台上就好了,他们没有错误.我还能做些什么来绘制我的神经网络图?
我有个问题。我想创建一个带有热图的流程。查看每个步骤花费了多长时间。我创建了该流程并为各个步骤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) pydot ×10
python ×8
graphviz ×6
keras ×2
pygraphviz ×2
svg ×2
anaconda ×1
conda ×1
dictionary ×1
dot ×1
jupyter ×1
networkx ×1
pandas ×1
python-3.x ×1
scikit-learn ×1
spyder ×1
windows ×1