見出し画像

離散グラフをLaTeXで出力してみる〜4. センタリング・並列〜

こんにちは。

その3までで、おおよそのグラフは描画できると思います。
今回は、そのグラフを見栄え良く並べる方法について紹介します。

手順7 グラフをセンタリングする

ここでは、完全グラフ$${K_4}$$を例にあげて紹介したいと思います。

\begin{tikzpicture}[scale=0.4]
\coordinate[label=below left:$v_1$](v1)at(0,0);
\coordinate[label=below right:$v_2$](v2)at(10,0);
\coordinate[label=above right:$v_3$](v3)at(10,10);
\coordinate[label=above left:$v_4$](v4)at(0,10);
\draw[thick](v1)--(v2)--(v3)--(v4)--cycle;
\draw[thick](v2)--(v4);
\draw[thick](v1)--(v3);
\foreach\P in{v1,v2,v3,v4}\fill[black](\P)circle(0.25);
\end{tikzpicture}

これをそのままコンパイルすると、紙面の左端に寄ってしまうのであまり綺麗ではないですよねー。

左側に寄ってしまっています

そこで、以下のようにソースを書き加えます。

\begin{figure}[htbp]
\centering

\begin{tikzpicture}[scale=0.4]
\coordinate[label=below left:$v_1$](v1)at(0,0);
\coordinate[label=below right:$v_2$](v2)at(10,0);
\coordinate[label=above right:$v_3$](v3)at(10,10);
\coordinate[label=above left:$v_4$](v4)at(0,10);
\draw[thick](v1)--(v2)--(v3)--(v4)--cycle;
\draw[thick](v2)--(v4);
\draw[thick](v1)--(v3);
\foreach\P in{v1,v2,v3,v4}\fill[black](\P)circle(0.25);
\end{tikzpicture}

\end{figure}

最初の[htbp]は、この図形を挿入する場所を指定する命令です。
hはHereの頭文字で、figureで囲まれた図形をその場所に挿入することを優先してくれます。
次のtはTopの頭文字になります。文章段落や他の図形との兼ね合いでその場所に挿入できない時は、そのページの一番上に挿入しろ、という命令になります。
それも不可能な時はページの一番下(bはBottomの頭文字)に配置させ、最後の手段として、独立したページ(pはPageの頭文字)に配置させるように、という指示となります。

また、2行目の \centering は、読んで字の如く、真ん中に配置しろという指示になります。

これでコンパイルすると以下のようになります。

真ん中に出てくれました。

手順8 グラフを並列に並べる

では、グラフを二つ並べて表記したい場合、どうしたら良いでしょうか。

まずは普通にソースを記述してみます。

\begin{figure}[htbp]
\centering

\begin{tikzpicture}[scale=2]
\coordinate(v1)at({cos(1*pi/4 r)},{sin(1*pi/4 r)});
\coordinate(v2)at({cos(3*pi/4 r)},{sin(3*pi/4 r)});
\coordinate(v3)at({cos(5*pi/4 r)},{sin(5*pi/4 r)});
\coordinate(v4)at({cos(7*pi/4 r)},{sin(7*pi/4 r)});
\foreach\P in{v1,v2,v3,v4}\fill[black](\P)circle(0.05);
\draw[thick](v1)--(v2)--(v3)--(v4)--cycle;
\draw[thick](v1)--(v3);
\draw[thick](v2)--(v4);
\end{tikzpicture}

\begin{tikzpicture}[scale=2]
\coordinate(v1)at({cos(3*pi/6 r)},{sin(3*pi/6 r)});
\coordinate(v2)at({cos(7*pi/6 r)},{sin(7*pi/6 r)});
\coordinate(v3)at({cos(11*pi/6 r)},{sin(11*pi/6 r)});
\coordinate(v4)at(0,0);
\foreach\P in{v1,v2,v3,v4}\fill[black](\P)circle(0.05);
\draw[thick](v1)--(v2)--(v3)--(v4)--cycle;
\draw[thick](v1)--(v3);
\draw[thick](v2)--(v4);
\end{tikzpicture}

\end{figure}

前半は辺の交差がある$${K_4}$$、後半は辺の交差のない$${K_4}$$について記述しています。

縦に二つ並びました。

そのままソースを打ち込むだけですと、縦に並んでしまうことがあります。
できれば横に並んでほしい…

ここで、以下のように書き加えます。

\begin{figure}[htbp]
\centering

\begin{tabular}{cc}

\begin{tikzpicture}[scale=2]
\coordinate(v1)at({cos(1*pi/4 r)},{sin(1*pi/4 r)});
\coordinate(v2)at({cos(3*pi/4 r)},{sin(3*pi/4 r)});
\coordinate(v3)at({cos(5*pi/4 r)},{sin(5*pi/4 r)});
\coordinate(v4)at({cos(7*pi/4 r)},{sin(7*pi/4 r)});
\foreach\P in{v1,v2,v3,v4}\fill[black](\P)circle(0.05);
\draw[thick](v1)--(v2)--(v3)--(v4)--cycle;
\draw[thick](v1)--(v3);
\draw[thick](v2)--(v4);
\end{tikzpicture}

\begin{tikzpicture}[scale=2]
\coordinate(v1)at({cos(3*pi/6 r)},{sin(3*pi/6 r)});
\coordinate(v2)at({cos(7*pi/6 r)},{sin(7*pi/6 r)});
\coordinate(v3)at({cos(11*pi/6 r)},{sin(11*pi/6 r)});
\coordinate(v4)at(0,0);
\foreach\P in{v1,v2,v3,v4}\fill[black](\P)circle(0.05);
\draw[thick](v1)--(v2)--(v3)--(v4)--cycle;
\draw[thick](v1)--(v3);
\draw[thick](v2)--(v4);
\end{tikzpicture}

\end{tabular}
\end{figure}

かなり無理やりな気もしますが、これで横に並列になって出てきてくれます。汗

なお、3つ以上のグラフを2行に分けて出力したい場合は、1行目に入れたいグラフを \begin{tabular}{cc} と\end{tabular} で囲み、2行目に入れたいグラフをあらためて \begin{tabular}{cc} と\end{tabular} で囲み直すと、うまく行きます。

例えば上の多面体グラフは、正八面体グラフのソースを記述した後に \end{tabular} を入れ、その後すぐに \begin{tabular}{cc} と入れています。
(このソースは相当長くなるので割愛します…)

その4は以上です!

この記事が気に入ったらサポートをしてみませんか?