見出し画像

離散グラフをLaTeXで出力してみる〜1. 準備と点のプロット〜

こんにちは。

数学の文章を書くにあたり、$${\LaTeX}$$で離散グラフを出力する方法について調べたのですが、ネット上であまり見当たらなかったので、備忘録も兼ねてまとめておきたいと思います。

ちなみに、私はCloud LaTeXを用いて作成しております。
$${\LaTeX}$$で文章や数式は書けるが、離散グラフの挿入方法がわからない、という方には参考になるかもしれません。もちろん、初めて$${\LaTeX}$$を使うという人にもわかるように書いているつもりです。じゃないと自分が見返したときに絶対わからなくなるので笑

なお、ここに書かれたことが離散グラフを描画する上で最も良い方法だとは考えにくいので、もし良い方法を知っている人がいたら、ぜひコメント等で教えていただけると幸いです。

手順0 LaTeXの準備

$${\LaTeX}$$に初めて触れる人に向けて、簡単に説明をします。$${\LaTeX}$$に詳しい方は手順1までスキップしてください。

$${\LaTeX}$$(LaTeXと綴る・ラテック、ラテフなどと呼ぶ)は、文書作成ツールのひとつで、数式や図を綺麗に出力することに優れています。

Wordファイル等で文書を作成すると、数式が綺麗に出力できなかったり、第1章、第2章を書いてから、やっぱり第1章の前に章を入れたくなって、目次や章の数字をすべて書き直したりすることがあります。これが割と面倒だったりします。
それを解消できるのが$${\LaTeX}$$なのです。

とはいっても、よくわからないソフトをダウンロードして使うのは大変と思います。そこで、インターネット上で$${\LaTeX}$$を使うことができるCloud LaTeXというサイトを私は使いました。

インターネット接続がないと使えませんが、このサイト上でソース(命令文)を記述してコンパイル(命令の実行)をすると、pdfで出力してくれます。

ここで マイページ作成→新規プロジェクト→作成→開く をするとファイルを開けます。
左側のmain.texを押すと、ソースの記述欄が出てきます。
右上のコンパイルを押すと、右側に出力される形です。

こんな感じです

真ん中のソースは一旦すべて消して、以下のソースをコピペして入れてみます。
私が論文を書くときに使ったものなので、離散グラフを描くだけなら不要なものも入っていますが…

\RequirePackage[l2tabu, orthodox]{nag}
\documentclass[11pt, a4paper, onecolumn, titlepage]{jsreport}
\usepackage{amsmath, amsthm, amssymb, amsfonts}

\begin{document}

\end{document}

ここで、 \begin{document} より上側の部分をプリアンブルと呼びます。書類の設定などをする部分です。
そして、 \begin{document} と \end{document} の間に文章を打ったりコマンドを記入すると、それにそって出力されるわけです。

試しに少しだけ書いてみます。

コンパイルすると右側に出力されます。

詳しい説明は省きますがこれで文書作成ができるようになりました。

手順1 TikZ環境を導入する

私はTikZ環境の中で離散グラフを描画しました。
なので最初にTikZ環境を導入してください。

TikZ環境は、プリアンブルに

\usepackage[dvipdfmx]{graphicx}
\usepackage{tikz}
\usetikzlibrary{positioning, intersections, calc, arrows.meta,math}

https://note.com/dan_oyama/n/n6c3ae2a270ac

をコピペすれば完了します。これで手順1は終了です。

手順2 頂点を出力する

最初はいくつかの点を打つところから始めます。

TikZを用いて図を書き始めるときは、これからTikZの指示を始めます!という宣言をします。終わる時は、終わります!の宣言をします。
\begin{document} と \end{document} の間に以下のように書きます。

\begin{tikzpicture}
(注:ここに図のソースを打ち込みます)
\end{tikzpicture}

このbeginとendの間に指示を与えていくことで、一つの図形を描くことができるわけです。
beginの前にある \ ですが、ただbeginと入力するとbeginと出てくるだけなので、命令としてbeginを使うときは \ で始めるということです。

では実際に点をプロットします。下のようにソースを記述します。
点には名前と座標を与えましょう。

\begin{tikzpicture}

\coordinate(v1)at(1,1);

\end{tikzpicture}

座標(1,1)に頂点を置き、今後はその頂点をv1と呼びます、という意味になります。
1つの指示が終わったら、必ず後ろに ; を打って終わります。

しかし、これでコンパイルしても白紙ページが出てくるだけです。点は面積を持たないからです。
したがって、この点を中心として黒い円を描くことで、点を見やすくしてあげることが必要になります。

\begin{tikzpicture}

\coordinate(v1)at(0,0);
\fill[black](v1)circle(1);

\end{tikzpicture}

v1を中心に半径1の円を描き、中を黒で塗りつぶす、という指示になります。
これでコンパイルしてみましょう。

ページの左上に黒丸が出現するはずです。もう少したくさん点を打ってみます。

\begin{tikzpicture}

\coordinate(v1)at(0,0);
\coordinate(v2)at(10,0);
\coordinate(v3)at(10,10);
\coordinate(v4)at(0,10);

\foreach\P in{v1,v2,v3,v4}
\fill[black](\P)circle(1);

\end{tikzpicture}

点を打つ時は \coordinate(v~)at(座標) を繰り返してプロットしています。自分の好きなところに好きなだけ点を打ちましょう!

また、円を書いて塗りつぶす作業は、すべての頂点に一度ずつ行うのは大変なので、まとめることができます。
\foreach\P in{v1,・・・} とすることで、すべての頂点をまとめて \P として扱えるようにします。これでコンパイルすると以下のように出ます。

正方形の頂点をプロットできます

この座標は、手計算で考えるしかありません。作りたいグラフを手元で書いてみて座標を与え、それを$${\LaTeX}$$に打ち込むという作業が必要になります。

また、今は座標を整数値で打ち込んでいますが、三角関数を打ち込んでも、勝手に計算をして出力してくれます。
なので、正三角形の頂点を取りたければ、

\begin{tikzpicture}

\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)});

\foreach\P in{v1,v2,v3} \fill[black](\P)circle(1);
\end{tikzpicture}

と打ち込むことによって、単位円上に正三角形を描いた時の頂点を出力できるのです。
実際にコンパイルすると以下のようになります。


点でかすぎ!

点が大きすぎてよくわかりませんが、円の中心は確かに正三角形の頂点になるように綺麗に並びます。

サイズ調整については、別稿で書くことにします。
とりあえずこれで正確に正多角形の頂点をプロットできるということがわかると思います。

今回はここまでにします。またよろしくお願いします。

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