35596


①graphviz,pythonでdot言語のソースを入力する方法を教えて下さい。  
AttributeErrorがでました。  
②Sourceクラスの検索方法を教えて下さい。  
google,grep,pychram内で検索できますか。  
よろしくお願いします。

[code]

    from graphviz import *
    temp = """
    digraph dot12{
    1->2    
    }
    """
    s = Source(temp, filename="test.gv", format="png")
    print(s.source)
    s.view()
    print('-------------------------------------------------')
    p = Graph(name='parent')
    p.source=temp
    print(p.source)
    #    p.source=temp
    #AttributeError: can't set attribute
    
[/code]


CC BY-SA 3.0
2017-05-10T14:51:13.320
34613
2017-07-07T22:09:49.453
17199
question
python dot graphviz
graphviz,pythonでdot言語のソースを入力する方法を教えて下さい。


① 調べて見る限り、graphvizではdotのソースを入力してグラフを作る、という使い方は想定していないようなので、別のパッケージを使うほうが早そうです。

[code]

    import pydot
    temp = """
    digraph dot12{
    1->2
    }
    """
    
    graph = pydot.graph_from_dot_data(temp)
    graph.write_jpeg('temp.jpg',  prog='dot')
    
[/code]

② Pycharmだと、Sourceクラスを定義しているコードなら、ソースコード内の「Source」を右クリック→[Go
to]→[Declaration]で参照することができます。  
ただし、「p.source」はプロパティであり、これを定義しているのはDotクラスの中なのですが、Pycharmでこの定義をうまく見つける方法はわかりませんでした。


CC BY-SA 3.0
2017-06-15T06:29:28.810
35596
2017-06-15T06:29:28.810
349
34613
answer


[graphviz
パッケージのドキュメント](https://graphviz.readthedocs.io/en/stable/manual.html#using-raw-
dot)に、生のDOTファイルからグラフオブジェクトを構成する方法が載っています。ただしこの方法だと、作ったグラフを編集することはできないので注意してください。以下、Python
3 で実装した簡単な例と実行例です。

  * sample.dot
[code]     graph samplegraph {

          a -- b -- c;
          b -- d;
    }
    
[/code]

  * sample.py
[code]     from graphviz import Source

    
    dotfile = open('sample.dot', 'r')
    graph = Source(dotfile.read())
    dotfile.close()
    
    print(graph.source)
    
[/code]

  * 実行例
[code]     $ python sample.py

    graph samplegraph {
          a -- b -- c;
          b -- d;
    }
    
[/code]

その他の graphviz の機能についても、[graphviz の API
リファレンス](https://graphviz.readthedocs.io/en/stable/api.html)に使い方が書かれています。多くの場合、このドキュメントの中で検索すれば事足りるはずです。


CC BY-SA 3.0
2017-07-07T22:09:49.453
36181
2017-07-07T22:09:49.453
19110
34613
answer