LoginSignup
6
4

More than 5 years have passed since last update.

TikZのdatavisualizationライブラリでcsvファイルから簡単な2Dプロットをする

Last updated at Posted at 2016-08-01

[2016年8月8日追記] PGFPlots というパッケージ(?)の存在を知ったのだが, こっちでやった方が楽かもしれない. その内調べる.

数値計算の結果を論文やスライド用の図にするとき, デザインやらフォントやらを好きに変えたい, と思うことが多い.
各々の数値計算ソフトやグラフ描画ソフトでいじることはできるけど, 慣れとか自由度とかの問題から, TikZ を使いたい.
また, Julia や Matlab や Scilab は配列をcsvファイルとして出力する機能が備わっているので, これを利用したい.
そこで TikZ の (というか PGF の) マニュアルを検索してみると, どうやら datavisualization というライブラリを使うと良さそう, ということがわかる.
ここではマニュアルの Data Visualization の章の中から, 自分が今までやってきたこと, これからやりたいことをピックアップしてメモしておく.

しかし, 分量が多いので, 記事を4つに分けた.
それぞれの内容は以下の通りである.

  • 1つ目: この記事. 基本的なプロットについて.
  • 2つ目: 軸の編集について.
  • 3つ目: より細かい装飾について.
  • 4つ目: 応用編. 凝った折れ線グラフを描く.

なお, 2Dプロットしか扱わない. TikZ での3Dプロットはやったことがないのでよくわからない...

仮定

この記事では以下の csv ファイルを用いて三角形と四角形をプロットすることにする.
なお, (csvファイルに限らず) 点データの集まりをデータセットと呼ぶ.

triangle.csv
1,2
4,2
2,4
1,2
quadrangle.csv
1.5,1
2.5,-1.5
4.5,-0.5
3,2.5
1.5,1

可視化するとこんな感じ (これは matplotlib による可視化).
triqua.png

以下, 日本語入力することを考えて, (lt)jsarticle クラス + preview パッケージで図を作ることにする.
(別に standalone クラスでもいいと思う.)
Tikz のライブラリの読み込みも含めると, プリアンブルは以下のようになる.

\documentclass{ltjsarticle}

\usepackage{tikz}
\usetikzlibrary{datavisualization}

\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}

\begin{document}
...

以後, プリアンブルは省略して, tikzpitucure 環境だけ書く.

ライブラリの読み込み

すでに上に書いてあるが, TikZ のライブラリの読み込みには, \usetikzlibrary コマンドを用いる.

\usepackage{tikz}
\usetikzlibrary{datavisualization}

とりあえずプロットする

三角形を1つだけプロットするなら, 以下の記述で十分.

\begin{tikzpicture}
    \datavisualization[
        scientific axes, 
        visualize as line
        ]
        data[headline={x, y}, read from file=triangle.csv];
\end{tikzpicture}

出力:

csv2pdf-2-000001.png

大事な点は,

  1. \datavisualization コマンドで描画の情報を記述する
  2. data[...] でcsvファイルを読み込む

の2点である.
また, セミコロンの位置に注意.

それぞれのオプションについて説明する.

描画の情報を記述する: \datavisualization コマンド

最低限, 軸のスタイル線のスタイルを指定しないと, 描画されない.

まず, scientific axes軸のスタイルを記述している.
他にもいろいろ指定できるようだが, 使うとすれば以下のものくらいだろう.

オプション 軸のスタイル
scientific axes 通常の(?)軸
school book axes 中学校で習うような軸
xy Cartesian 軸を描かない

次に, visualize as line線のスタイルを指定している.
line 以外も指定できる.

オプション 線のスタイル
line 直線で結ぶ
smooth line 曲線で結ぶ
scatter ×印を打つだけで結ばない

ただ, 普通は line でいいと思う.
点にマーカーを付けて線で結ぶ, ということをしたいときは, TikZ のスタイル指定方法が使えるので, scatter ではなくそっちでやれば良い (後述).

csvファイルを読み込む: data[...]

最初の headline={x, y} で, データセットにヘッダーを付け加えている.
数字だけのcsvファイルを使う場合, ヘッダーを付け加えないとエラーになるっぽいので, ほぼ必須.
詳しいことはマニュアルの Providing Data for a Data Visualization のセクションに書いてあるっぽい.

後ろの read from file= でcsvファイルを指定する.
例の如く相対パスしか指定できない模様.

2つ以上のデータセットをプロットする

この場合は, データセットに名前をつけるというのが重要.

\begin{tikzpicture}
    \datavisualization[
        scientific axes, 
        visualize as line/.list={tri, qua}
        ]
        data[set=tri, headline={x, y}, read from file=triangle.csv]
        data[set=qua, headline={x, y}, read from file=quadrangle.csv];
\end{tikzpicture}

出力:
csv2pdf-2-000002.png

前節からの変更点は2ヶ所である.

  1. visualize as linevisualize as line/.list={tri, qua} となっている. これによって, データセットの名前の集合を用意している.
  2. data[...]set=tri (または set=qua) が追加されている. これはデータセットに名前を割り当てている.

名前は何でもいいっぽい. /.list={1,2} とかでも大丈夫.
プロットするデータセットの数だけ名前を用意する必要がある.

名前をつけるという操作によって, それぞれの線を装飾することができる (次節).
なので, データセットが1つであっても, 常に名前をつけるようにしておくのが良いと思う.
(実は, 名前を指定しなかった場合, デフォルトで line という名前が付けられるのだが.)

線を装飾する

\datavisualization コマンドのオプション内で, 名前={style={...}} とすることで, style={...} 内でTikZ のスタイル指定方法を使えるようになる.

例えば,

  • 三角形は 赤線, 細線, データ点に×印, ×印は青色
  • 四角形は 緑線, 太線, 破線

としたければ, 以下のようにすれば良い.

\begin{tikzpicture}
    \datavisualization[
        scientific axes, 
        visualize as line/.list={tri, qua}, 
        tri={style={red, thin, mark=x, mark options={color=blue}}},
        qua={style={green, thick, dashed}}
        ]
        data[set=tri, headline={x, y}, read from file=triangle.csv]
        data[set=qua, headline={x, y}, read from file=quadrangle.csv];
\end{tikzpicture}

出力:
csv2pdf-2-000003.png

マーカーについて: plotmarks ライブラリ

これは datavisualization ライブラリの話ではないが, 上の三角形のようにマーカー付きのプロットをしたいことは多いので, ついでにまとめておく.

まず, TikZ では以下の3つのマーカーを使うことができる.

マーカー 出力
*
+
x (小文字のエックス) ×

plotmarks ライブラリを使うと, 使えるマーカーが増える.
例えば, 次が使えるようになる.

マーカー 出力
o (小文字のオー)
asterisk
oplus $\oplus$
otimes $\otimes$
square

詳細は マニュアルの Plot Mark Library のセクションを参照.

他の記事へのリンク

冒頭にもあるが, 改めて書いておく.

  • 1つ目: この記事. 基本的なプロットについて.
  • 2つ目: 軸の編集について.
  • 3つ目: より細かい装飾について.
  • 4つ目: 応用編. 凝った折れ線グラフを描く.
6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4