TikZで関数のグラフを描く方法
(datavisualizationライブラリを利用)

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次元の座標も扱える。

おしまい。

コメントを残す

メールアドレスが公開されることはありません。