ファイルに保存されているデータがあり、それを pgfplots でプロットしたいと考えています。データは行ごとに保存されており、ファイルは次のようになります。
a 1 2 3 4 5
b 6 7 8 9 0
c 2 4 6 8 0
...
ただし、pgfplots ではデータが列方向であると想定されています。これを解決するには、 を使用してテーブルを転置します\pgfplotstabletranspose
。ただし、行タイトルに問題があるようです。
次の最小限の例は、私がこれまでに達成したことを示しています。
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread{
x 1 2 3 4 5
y 1 4 9 16 25
}\datatable;
\pgfplotstabletranspose\datatable{\datatable};
\addplot table {\datatable};
\end{axis}
\end{tikzpicture}
\end{document}
望ましい出力は次のプロットです。
残念ながら、次のエラーが発生します。
パッケージ PGF 数学エラー: 入力 'x' を浮動小数点数として解析できませんでした。
(興味深いことに、使用すると-interaction=nonstopmode
プロットは希望どおりに生成されますが、エラーは煩わしいです...)
最初の列に行タイトルが含まれていることを何らかの方法で伝えてpgfplots
、エラー メッセージを削除することはできますか?
答え1
\pgfplotstabletranspose
列名を維持するにはトレーニングが必要です。
データにダミー行を追加し、値を設定しますcolnames 0 1 2 3 4
(colnames
基本的に何にでも置き換えることができます)。
\addplot table[x=xrow,y=yrow] {\otherdatatable};
(転置テーブルには別のマクロを使用しました。同じマクロを使用することが適切かどうかはわかりません)
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread{%
colnames 0 1 2 3 4
xrow 1 2 3 4 5
yrow 1 4 9 16 25
}\datatable;
\pgfplotstabletranspose[colnames from=colnames]\otherdatatable{\datatable};
\addplot table[x=xrow,y=yrow] {\otherdatatable};
\end{axis}
\end{tikzpicture}
\end{document}
etcの内部はわからないので、混乱を避けるために ( )xrow
とを使用しました。yrow
x=x,y=y
\pgfplotstable