TikZで関数のグラフを描く方法を書く(part2)。今回はdata visualizationライブラリを使う。
1. タイプセット環境
macOS Sierra,texlive2016,lualatex
2. コードと実行結果
- コード
-
% % preamble for lualatex % \RequirePackage{luatex85} \documentclass{ltjsarticle} \usepackage{luatexja} %\usepackage{luatexja-fontspec} %\usepackage{fontspec} \usepackage[top=5mm,right=5mm,bottom=5mm,left=5mm,papersize={10cm,12cm}]{geometry} \usepackage{tikz} \usetikzlibrary{datavisualization,datavisualization.formats.functions,datavisualization.polar} %\setmainfont{rounded-mplus-1m-light} %\setmainjfont{rounded-mplus-1m-light} %\pagestyle{empty} \begin{document} % % dataを具体的に与える % dataを具体的に与える\\ \begin{tikzpicture} \datavisualization[school book axes, visualize as smooth line] data { x,y 0,0 0.5,0.25 0.7,0.49 1,1 1.5,2.25 }; \end{tikzpicture} \\ % % dataを関数で与える % dataを関数で与える\\ \begin{tikzpicture} \datavisualization[school book axes, visualize as smooth line] data [format=function] { var x : interval [0:2*pi]; func y = sin(\value x r); }; \end{tikzpicture} \\ % % 軸を変更 % 軸を変更\\ \begin{tikzpicture} \datavisualization[scientific axes, visualize as smooth line] data [format=function] { var x : interval [0:2*pi]; func y = sin(\value x r); }info{ % % tikzの座標とdata visualizationの座標は異なる。 % \node[fill=cyan, circle] at (0.5*pi, 1) {\scriptsize 極大}; \node[fill=red, circle] at (visualization cs: x={(0.5*pi)}, y=1) {\scriptsize 極大}; }; \end{tikzpicture} \\ % % 極座標 % 極座標\\ \begin{tikzpicture}[scale=0.75] \datavisualization[scientific polar axes={0 to 2pi}, visualize as smooth line] data [format=function] { var angle : interval [0:2*pi]; func radius = sin(2*\value{angle}r); }; \end{tikzpicture} \\ % % 3次元の座標も扱える % 3次元\\ \begin{tikzpicture}[scale=1.2] \datavisualization[xyz Cartesian cabinet, all axes={visualize axis={low=0, style=->}}, visualize as scatter] data { x,y,z 0,0,0 1,1,1 1,0,0 0,1,0 0,0,1 2,2,2 }; \end{tikzpicture} \end{document}
- 実行結果
3. 説明
- 3.1. preambleの説明
-
% % preamble for lualatex % \RequirePackage{luatex85} \documentclass{ltjsarticle} \usepackage{luatexja} %\usepackage{luatexja-fontspec} %\usepackage{fontspec} %\usepackage[top=5mm,right=5mm,bottom=5mm,left=5mm,papersize={10cm,12cm}]{geometry} \usepackage{tikz} \usetikzlibrary{datavisualization,datavisualization.formats.functions,datavisualization.polar} %\setmainfont{rounded-mplus-1m-light} %\setmainjfont{rounded-mplus-1m-light} %\pagestyle{empty}
追加したtikzlibrary
- datavisualization
- \datavisualizationを使うために追加。
- datavisualization.formats.functions
- format=functionオプションを使うために追加。
- datavisualization.polar
- scientific polar axesオプションを使うために追加。
フォントなど,見た目を整えるための記述はコメントアウトした。
- 3.2. documentの説明
-
% % dataを具体的に与える % dataを具体的に与える\\ \begin{tikzpicture} \datavisualization[school book axes, visualize as smooth line] data { x,y 0,0 0.5,0.25 0.7,0.49 1,1 1.5,2.25 }; \end{tikzpicture}
データを外部ファイル(csv)から読み込むときは,data[read from file=<ファイル名>]とする。
% % dataを関数で与える % dataを関数で与える\\ \begin{tikzpicture} \datavisualization[school book axes, visualize as smooth line] data [format=function] { var x : interval [0:2*pi]; func y = sin(\value x r); }; \end{tikzpicture}
format=functionオプションを使うには,datavisualization.formats.functionsライブラリが必要。
% % 軸を変更 % 軸を変更\\ \begin{tikzpicture} \datavisualization[scientific axes, visualize as smooth line] data [format=function] { var x : interval [0:2*pi]; func y = sin(\value x r); }info{ % % tikzの座標とdata visualizationの座標は異なる。 % \node[fill=cyan, circle] at (0.5*pi, 1) {\scriptsize 極大}; \node[fill=red, circle] at (visualization cs: x={(0.5*pi)}, y=1) {\scriptsize 極大}; }; \end{tikzpicture}
軸の種類を変えた。infoでグラフの中にpathを作ったりnodeを置いたりできる。data visualizationの座標とtikzの座標は異なるので注意する。data visualizationの座標を使いたいときは,visualization cs:の指定が必要。
% % 極座標 % 極座標\\ \begin{tikzpicture}[scale=0.75] \datavisualization[scientific polar axes={0 to 2pi}, visualize as smooth line] data [format=function] { var angle : interval [0:2*pi]; func radius = sin(2*\value{angle}r); }; \end{tikzpicture}
極座標を使うには,datavisualization.polarライブラリが必要。
% % 3次元の座標も扱える % 3次元\\ \begin{tikzpicture}[scale=1.2] \datavisualization[xyz Cartesian cabinet, all axes={visualize axis={low=0, style=->}}, visualize as scatter] data { x,y,z 0,0,0 1,1,1 1,0,0 0,1,0 0,0,1 2,2,2 }; \end{tikzpicture}
3次元の座標も扱える。
おしまい。