問題タブ [neato]
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.
r - R でノード位置を設定し、丸頭と矢頭の両方を使用してエッジを集中させたネットワーク グラフを作成する
DiagrammeR/GraphViz を使用して R で次のネットワーク グラフ形式を複製する方法を見つけようとしましたが、成功しませんでした (N1 の太い黒い矢印は無視してください): https://i.stack.imgur.com/oHpQz。 png
グラフは有向グラフであり、特定の方向の各辺は、辺の値が正の場合は矢印 (-->) で終わり、辺の値が負の場合は円/円 (--o) で終わります。ノードのペア (例: N1 -- A1) の間に、エッジ N1 --> A1 とエッジ A1 --o N1 が存在する可能性があります。一方の端に矢印、もう一方の端に円の頭 (このように: o--->)。これらは平行にすることも、理想的には 2 つのエッジのように見せることもできません。
もう 1 つの要件は、ノードが非常に特定の位置にある必要があり、エッジが変更される可能性があるモデル シミュレーション全体でそこにとどまる必要があることです。私が試したことと読んだドキュメントから、これは DOT 形式では実行できませんが、neato 形式では可能です。
ここで問題が発生します。neato では、ノードの x、y 位置を定義することで、ノードを必要な場所に正確に配置できます。ただし、concentrate = true を使用して 2 つの平行なエッジから o---> エッジを作成すると、1 種類の矢じりしか残りません。つまり、o---> のように見えるはずのエッジが、最終的に ---> または o--- のようになります。
これは、concentrate = true が実行するため、DOT 形式では問題になりませんが、DOT では正確なノード位置を割り当てることができません。ノードランクを使用してこれを回避しようとしましたが、うまくいきませんでした。同じランク内の異なるランクで必要なノードをスタックするようです。同様に、concentrate = true は、同じランク内のノード間のエッジには機能しないようです。それらを集中させずに 2 つの別個の曲線エッジ ---> および o--- として残すためです。
これが機能する必要がある理由は、エッジが変化するモデル シミュレーションを実行していて、そのようなグラフを何百も生成する必要があるためです。簡単に比較するには、一貫性を保つためにノードを同じ場所に配置する必要があります。
これは、neato 形式を使用して思いついた最も近いものです (ノードは希望どおりに配置されていますが、すべての黒いエッジから自己エッジを差し引いた適切な o---> が表示されていません。赤いエッジは真の一方向リンクです)。 : https://i.stack.imgur.com/YJBY7.jpg
エッジのみが適切な o---> 形式として表示された場合、これは私のニーズに最適です。DiagrammeR/GraphViz、または別のプログラムを使用してこの問題を解決する方法をご存じでしたら、よろしくお願いします。ありがとう!