問題タブ [pydot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1933 参照

python - Python の有向グラフ

ETL (抽出変換読み込み) パイプラインとのさまざまなデータ エンティティの関係を表現しようとしています。最終的な出力は、大きな有向グラフです。これまでのところ、Python を使用してデータ関係を抽出しています。Pydot は、ブラウザーを使用して開くことができる svg ファイルを生成するのに役立ちます。私が生成するグラフは静的です。

Pydot を使用すると、ツールチップを設定したり、他の HTML ページをノードまたはエッジにリンクしたりできます。それ以上のものを探しています。

グラフのごく一部を以下に示します

有向グラフ

ここに画像の説明を入力

このグラフでいくつかのことをしたいと思います。

  • すべてのノードは、複数の属性 (名前を含む) を持つことができます。スペースが不足しているため、これらの属性を表示することはできません。しかし、ユーザーがマウスオーバーする (または他のマウスベースのアクションを実行する) と、これらの属性が「フローティング」テーブルとして表示され、ユーザーが興味がない場合は閉じることができます。
  • すべてのノード アトリビュートが整数または文字列であるとは限りません。グラフでも構いません。たとえば、ノードの 1 つについて、このデータ エンティティが過去 7 日間に読み込まれた頻度を示す棒グラフを使用できます。ユーザーがそのノードの上にマウスを移動 (クリック) すると、その棒グラフが浮かび上がります。現在、ノードに関連付けられた棒グラフ/円グラフ (上記を参照) を生成するために matplotlib を使用しています。pydot で setURL を使用して、これらの図を元の有向グラフにリンクします。しかし、ユーザーが新しいページに移動するため、ユーザー エクスペリエンスは良くありません。
  • Pydot/GraphViz からデフォルトで取得するノード レイアウトなどに満足しています。絶対に必要でない限り、すべてをゼロから行うことは好まない.
  • ノードまたはエッジ属性のクエリに基づいて、グラフの特定の部分のみを強調表示する機能

私はこのフォーラムを読み、私のものと同様の質問に対するいくつかの選択肢を見つけました。

  • ゲフィ

  • igraph (頂点またはエッジでクエリできる igraph をいじってみました。ユーザー入力に基づいて最終的なグラフをインタラクティブにする方法がわかりませんでした。たとえば、ノードの上にマウスを置いてテーブルをフローティングするなど)。
  • Javascript ライブラリ - sigma.js、arbor.js、d3.js ノードボックス
  • ネットワークX
  • ノードボックス

Python のスキルはありますが、Javascript に関しては初心者です。(機能性と使いやすさの観点から)何が最善の策であるかを専門家から知りたいです。ブラウザベースのソリューションが推奨されます。

任意の提案/ヘルプをいただければ幸いです。

ありがとうアビジット

0 投票する
2 に答える
10492 参照

python - sklearn Python で決定木から pydot でグラフを作成する

私は、このコードがツリーの PDF グラフを作成することを期待していました。

私がやりたいことをpydotで行う方法はありますか? この道は行き止まりです。

問題をさらに説明すると、コードは最後のステートメントで失敗します。graph.write_pdf() は、graph.progs() で Graphviz を探していますが、エントリがありません。エラー メッセージには、Graphviz 実行可能ファイルが見つからないことが示されています。

とにかく、DOS 端末で dot.exe コマンドを呼び出してファイルを pdf することができましたが、この手順を実行するには pydot を使用することをお勧めします。

0 投票する
1 に答える
1037 参照

python - How to use lines with arrow in pydot

I have drawn a binary search tree using pydot with these commands

#xA;

Where function view traverses the tree and calls a simple routine to draw the edges:

#xA;

But the lines connecting the nodes are simple straight lines. Is there a way to change the simple lines into directed arrows?

0 投票する
1 に答える
2813 参照

python - pydot エッジの長さを制御する必要がある

pydot を使用して、同じ深さのすべてのノードが同じ深さで表示され、すべてのエッジが一定の角度 (真下ではない) である「通常のツリー グラフ」のように見える有向ツリー グラフを生成する方法はありますか?

これらのデフォルトを使用する場合:

ノード 2 と 1 の間のエッジの長さが長すぎます。見る:
ここに画像の説明を入力

次のように、「1」のエッジ ウェイトを使用してノードの長さを修正できます。

graph.set_edge_defaults(color="blue", arrowhead="vee", weight="1")

しかし、今度はエッジの 2 つが 2 と 3、および 7 と 6 の間でまっすぐ下を向いています。以下を参照してください。 ここに画像の説明を入力

真っ直ぐ下を向いているエッジは、実際の問題であることが判明しました。左右の兄弟が両方とも描画されない場合、どちらのノード (左または右) が描画されるかは明確ではありません。

PS: この同じプロジェクトに関する以前の質問で、pydot で生成されたツリー グラフでエッジが真下を向かないように、エッジの角度を制御する方法を尋ねました。その質問は、「Guy」によって非常によく答えられました。目に見えないノードを使用してガイのソリューションを実装した後、新しい副作用が発生しました。一部のグラフの一部のエッジの長さが長すぎます。参照用の前の質問へのリンクは次のとおりです。 pyDot でグラフを作成するときに線の角度を制御する方法はありますか

0 投票する
1 に答える
1466 参照

python - pydot のレコード ノードでポート名を使用する方法

pydot でポートを使用してノードを描画する方法を見つけることができませんでした。ドキュメントでも Web 上の例でもありません。

pydot を使用して次のグラフを描画する方法はありますか?

図:

ドットコード:

ありがとう!

0 投票する
1 に答える
2135 参照

python - PyDotを使用してドットグラフの頭を並べますか?

ラボ実験の動的に生成されたグラフを作成しています。これは今のように見えます:

実験グラフ

理想的には、青色のノードを上部に一列に並べて、現在の実験に至るまでの履歴がどれほど大きくなっても見えるようにしたいと考えています。GraphVizでそれを行う方法はありますか? 私は PyDot を使用していますが、ドット グラフを手動で編集することもできます。

関連する可能性のある質問を見つけましたhere、それらをサブグラフに入れると役立ちますか?

編集:これが現在のドットコードです。