我正在尝试绘制一个图的趋势线。我发现的唯一方法是使用表格:
\begin{figure}[H]
\begin{tikzpicture}
\begin{axis}
\addplot [only marks, mark = *] table {\datatable};
\addplot [red] table[y={create col/linear regression={y=Y}}
\end{axis}
\end{tikzpicture}
\end{figure}
所以我必须定义一个表。问题就在这里。我的绘图值是变量。我是这样定义的(以 x1 为例):\newcommand{\xOne}{32}
所以我的表格应该是:
\pgfplotstableread{
X Y
\xOne{} \yOne
\xTwo{} \yTwo
\xThree{} \yThree
}\datatable
但它不起作用,因为它似乎无法将它们识别为数字。我希望我的值保持变量,因为我在报告中到处都在使用它们:我希望能够通过更改命令中的值来快速更改它。
是否可以使用变量创建该类型的表?
(抱歉,我的英语水平一般,可能无法正确使用所有术语)
答案1
您可以使用逗号作为列分隔符,并且在第一列的宏名后没有括号对,那么它可以正常工作:
\pgfplotstableread[col sep=comma]{
X,Y
\xOne,\yOne
\xTwo,\yTwo
\xThree,\yThree
}\datatable
\documentclass[border=5mm]{standalone}
\newcommand{\xOne}{32}
\newcommand{\yOne}{32}
\newcommand{\xTwo}{34}
\newcommand{\yTwo}{33}
\newcommand{\xThree}{37}
\newcommand{\yThree}{35}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.3}
\pgfplotstableread[col sep=comma]{
X,Y
\xOne,\yOne
\xTwo,\yTwo
\xThree,\yThree
}\datatable
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot [only marks, mark = *] table {\datatable};
\addplot [red] table[y={create col/linear regression={y=Y}}] \datatable;
\end{axis}
\end{tikzpicture}
\end{document}