メタ列が条件を満たしている場合はpgfplotsでデータをプロットする

メタ列が条件を満たしている場合はpgfplotsでデータをプロットする

多数の列を含むデータ ファイルがあり、n=2 の bwgstar 対 servers をプロットしたいと考えています。つまり、n はメタ列、servers は x 軸、bwgstar は y 軸です。後でデータを再生成できるように、これを LaTeX ドキュメント内で実行したいと思います。

一部のデータの短縮版を以下に掲載します。

  k    n    servers   switches   degree   diameter   bwg      bwgstar   difference   t
  2    2    8         4          2        4          2        2         0            1
  2    3    36        9          4        5          8        6         2            3
  2    4    96        16         6        5          16       16        0            8
  2    5    200       25         8        5          36       30        6            10
  2    6    360       36         10       5          54       54        0            13
  2    7    588       49         12       5          96       84        12           21
  3    2    24        8          3        6          4        4         0            4
  3    3    162       27         6        7          26       22        4            10
  3    4    576       64         9        7          64       64        0            32

答え1

このアプローチは、テーブルから行をフィルタリングする:

\documentclass[border=5mm]{standalone}

\usepackage{filecontents}

\usepackage{pgfplots}
\pgfplotsset{
    discard if not/.style 2 args={
        x filter/.code={
            \ifnum\thisrow{#1}=#2
            \else
                \def\pgfmathresult{nan}
            \fi
        }
    }
}

\begin{filecontents}{data.dat}
k    n    servers   switches   degree   diameter   bwg      bwgstar   difference   t
  2    2    8         4          2        4          2        2         0            1
  2    3    36        9          4        5          8        6         2            3
  2    4    96        16         6        5          16       16        0            8
  2    5    200       25         8        5          36       30        6            10
  2    6    360       36         10       5          54       54        0            13
  2    7    588       49         12       5          96       84        12           21
  3    2    24        8          3        6          4        4         0            4
  3    3    162       27         6        7          26       22        4            10
  3    4    576       64         9        7          64       64        0            32
\end{filecontents}

\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot [only marks] table [x=bwgstar, y=servers, discard if not={n}{2}] {data.dat};
\end{axis}
\end{tikzpicture}
\end{document}

関連情報