「draw edge」コマンドを使用してTikzグラフに重みを表示する

「draw edge」コマンドを使用してTikzグラフに重みを表示する

Tikz グラフのエッジの重みとしていくつかの数値を表示したいと思います。重みのないグラフは次のとおりです。

\begin{figure}[!ht]
\begin{tikzpicture}[shorten >=1pt, auto, node distance=3cm, ultra thick]
    \tikzstyle{node_style} = [circle,draw=blue,fill=blue!20!,font=\sffamily\Large\bfseries]
    \tikzstyle{edge_style} = [draw=black, line width=2, ultra thick]
    \node[node_style] (v1) at (-2,2) {2};
    \node[node_style] (v2) at (2,2) {3};
    \node[node_style] (v3) at (4,0) {6};
    \node[node_style] (v4) at (2,-2) {4};
    \node[node_style] (v5) at (-2,-2) {5};
    \node[node_style] (v6) at (-4,0) {1};
    \draw[edge_style]  (v1) edge (v2);
    \draw[edge_style]  (v2) edge (v3);
    \draw[edge_style]  (v3) edge (v4);
    \draw[edge_style]  (v4) edge (v5);
    \draw[edge_style]  (v5) edge (v6);
    \draw[edge_style]  (v6) edge (v1);
    \draw[edge_style]  (v5) edge (v1);
    \draw[edge_style]  (v5) edge (v2);
    \draw[edge_style]  (v4) edge (v2);
    \end{tikzpicture}
\end{figure}

ウェブ上で何かを探してみましたが、\drawグラフで使用しているコマンドである edge コマンドを使用して重みを表示するものは見つかりませんでした。

私の問題を解決する方法を提案していただけますか?

答え1

エッジの横にラベルを追加するには、構文を使用しますedge node {some text}。たとえば、TikZのマニュアルの2番目のチュートリアル、セクション3.11を参照してください。線の横にテキストを追加する

ノードを線の反対側に配置する場合は、 を使用しますedge node[swap] {some text}

また、\tikzstyle非推奨とみなされるため、以下のように\tikzsetスタイルを使用するかtikzpictureオプションに追加する必要があります。TikZ スタイルを定義するには、\tikzset または \tikzstyle を使用する必要がありますか?

以下は、同じグラフを作成する 3 つの異なる方法であり、そのうちの 1 つは Alain がコメントで提案したものです。

ここに画像の説明を入力してください

\documentclass[tikz]{standalone}
\begin{document}

% first method
\begin{tikzpicture}[shorten >=1pt, auto, node distance=3cm, ultra thick,
   node_style/.style={circle,draw=blue,fill=blue!20!,font=\sffamily\Large\bfseries},
   edge_style/.style={draw=black, ultra thick}]

    \node[node_style] (v1) at (-2,2) {2};
    \node[node_style] (v2) at (2,2) {3};
    \node[node_style] (v3) at (4,0) {6};
    \node[node_style] (v4) at (2,-2) {4};
    \node[node_style] (v5) at (-2,-2) {5};
    \node[node_style] (v6) at (-4,0) {1};
    \draw[edge_style]  (v1) edge node{1} (v2);
    \draw[edge_style]  (v2) edge node{2} (v3);
    \draw[edge_style]  (v3) edge node{3} (v4);
    \draw[edge_style]  (v4) edge node{4} (v5);
    \draw[edge_style]  (v5) edge node{5} (v6);
    \draw[edge_style]  (v6) edge node{6} (v1);
    \draw[edge_style]  (v5) edge node{7} (v1);
    \draw[edge_style]  (v5) edge node{8} (v2);
    \draw[edge_style]  (v4) edge node{9} (v2);
    \end{tikzpicture}

% Second method
\begin{tikzpicture}[shorten >=1pt, auto, node distance=3cm, ultra thick]
   \begin{scope}[every node/.style={circle,draw=blue,fill=blue!20!,font=\sffamily\Large\bfseries}]
    \node (v1) at (-2,2) {2};
    \node (v2) at (2,2) {3};
    \node (v3) at (4,0) {6};
    \node (v4) at (2,-2) {4};
    \node (v5) at (-2,-2) {5};
    \node (v6) at (-4,0) {1};
   \end{scope}
   \begin{scope}[every edge/.style={draw=black,ultra thick}]
    \draw  (v1) edge node{1} (v2);
    \draw  (v2) edge node{2} (v3);
    \draw  (v3) edge node{3} (v4);
    \draw  (v4) edge node{4} (v5);
    \draw  (v5) edge node{5} (v6);
    \draw  (v6) edge node{6} (v1);
    \draw  (v5) edge node{7} (v1);
    \draw  (v5) edge node{8} (v2);
    \draw  (v4) edge node{9} (v2);
   \end{scope}
\end{tikzpicture}

% Third method    
\begin{tikzpicture}[shorten >=1pt, auto, node distance=3cm, ultra thick,
   edge_style/.style={draw=black, ultra thick}]

   \foreach [count=\i] \x/\y/\t in {-2/2/2, 2/2/3, 4/0/6, 2/-2/4, -2/-2/5, -4/0/1}
     \node [circle,draw=blue,fill=blue!20!,font=\sffamily\Large\bfseries]
        (v\i) at (\x,\y) {\t};

   \foreach \i/\j/\t in {1/2/1, 2/3/2, 3/4/3, 4/5/4, 5/6/5, 6/1/6, 5/1/7, 5/2/8, 4/2/9}
    \draw [edge_style]  (v\i) edge node{\t} (v\j);
\end{tikzpicture}
\end{document}

関連情報