本文へ移動
EasyLaTeXDocs

TikZ・PGFPlots による専門的な描画

TikZ は模式図・フローチャート・幾何図、PGFPlots は座標軸とデータの描画に使います。拡大しても鮮明なベクター図を作り、文書のフォントや数式と揃えられます。

EasyLaTeX のコンパイラー設定:LuaLaTeX と ltjsarticle。図には tikz、グラフには pgfplots を読み込みます。複雑な図ほど処理時間が増えます。

コードで描く場合と画像を使う場合

内容適した方法
写真・スキャン・画面画像既存画像を挿入
フロー・構造・幾何図TikZ
関数・測定データ・誤差棒PGFPlots
複雑な専門図や既存の図形作図ツールで PDF を出力。SVG は PDF や適切な画像形式に変換して挿入

再現性・バージョン管理・字体の統一が利点です。用途に合う専門ツールも使い、安定した形式で取り込みます。

最小の TikZ 図

プリアンブルで読み込みます。

LaTeX
\usepackage{tikz}

軸と線分を描く例です。

LaTeX
\begin{tikzpicture}
  \draw[->] (0,0) -- (4,0) node[right] {$x$};
  \draw[->] (0,0) -- (0,3) node[above] {$y$};
  \draw[blue,thick] (0,0) -- (3,2);
\end{tikzpicture}

通常の直交座標では既定の単位は 1 cm です。\draw は経路、角括弧は書式、node は文字を追加します。

ノードと矢印

書式を定義して再利用します。

LaTeX
\begin{tikzpicture}[
  box/.style={draw, rounded corners, minimum width=2.5cm, minimum height=8mm},
  arrow/.style={->, thick}
]
  \node[box] (input) {入力データ};
  \node[box, right=1.5cm of input] (process) {処理};
  \node[box, right=1.5cm of process] (output) {出力結果};
  \draw[arrow] (input) -- (process);
  \draw[arrow] (process) -- (output);
\end{tikzpicture}

right=... of ... には次のライブラリが必要です。

LaTeX
\usetikzlibrary{positioning}

長いラベルは短縮するか text width を指定し、ノードの重なりを防ぎます。

最小の PGFPlots グラフ

互換レベルを指定して読み込みます。

LaTeX
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

座標を直接書く例です。

LaTeX
\begin{tikzpicture}
  \begin{axis}[
    xlabel={時間(s)},
    ylabel={速度(m/s)},
    grid=major
  ]
    \addplot coordinates {(0,0) (1,1) (2,4) (3,9)};
  \end{axis}
\end{tikzpicture}

axis が軸・目盛り・ラベル・グリッド、\addplot が系列を扱います。量と単位を明示し、色だけで系列を区別しないようにします。

ファイルのデータを使う

プロジェクトに data/velocity.csv を作ります。

csv
time,velocity
0,0
1,1
2,4
3,9

列名を指定して読み込みます。

LaTeX
\addplot table [x=time, y=velocity, col sep=comma] {data/velocity.csv};

データと作図を分けると検証・更新が容易になります。x= と y= は CSV の列名に一致させます。

文書に配置する

キャプション・ラベル・参照を使うため figure で囲みます。

LaTeX
\begin{figure}[tbp]
  \centering
  % tikzpicture または axis をここに配置
  \caption{時間による速度の変化}
  \label{fig:velocity}
\end{figure}

キャプションには内容・出典・必要な誤差の説明を書きます。コードだけでは説明の代わりになりません。

よくある問題

Environment tikzpicture undefined

tikz を読み込みます。位置指定には \usetikzlibrary{positioning} も必要です。

Environment axis undefined

TikZ だけでなく pgfplots を読み込みます。axis は PGFPlots の環境です。

処理が遅い

不要な点・レイヤーを減らし、処理済みデータを使います。非常に大きい図は別の作図プロジェクトで PDF にし、ダウンロードした PDF を本文プロジェクトにアップロードして挿入できます。

完全な例

LaTeX
\documentclass[a4paper,12pt]{ltjsarticle}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{document}

\begin{figure}[tbp]
  \centering
  \begin{tikzpicture}
    \begin{axis}[
      width=0.75\linewidth,
      xlabel={時間(s)},
      ylabel={速度(m/s)},
      grid=major
    ]
      \addplot[blue,thick,mark=*] coordinates {
        (0,0) (1,1) (2,4) (3,9)
      };
    \end{axis}
  \end{tikzpicture}
  \caption{時間による速度の変化}
  \label{fig:velocity}
\end{figure}

\end{document}