![从 Pgfplots 中的表格中读取负值时,Pgfmath 行为异常](https://linux22.com/image/317635/%E4%BB%8E%20Pgfplots%20%E4%B8%AD%E7%9A%84%E8%A1%A8%E6%A0%BC%E4%B8%AD%E8%AF%BB%E5%8F%96%E8%B4%9F%E5%80%BC%E6%97%B6%EF%BC%8CPgfmath%20%E8%A1%8C%E4%B8%BA%E5%BC%82%E5%B8%B8.png)
令我惊讶的是,当我尝试用 计算从表中读出的数字的平方时pgfplots
,结果具有相同的符号。考虑一下:
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{filecontents}{data.dat}
col1 col2
-1 -2
0 -2
2 -3
\end{filecontents}
\begin{document}
\pgfplotstableread[col sep=space]{data.dat}\datatable
\begin{tikzpicture}
\begin{axis}[
xtick=data,
]
\addplot table[
x expr=\coordindex,
y expr={
\thisrow{col2}^2
}
] {\datatable};
\end{axis}
\end{tikzpicture}
\end{document}
col2
s 值应该取平方\thisrow{col2}^2
,但似乎\thisrow{col2}
扩展为例如-2
,表达式变为-2^2
并解析为-(2^2)
。此外,第二行似乎完全错误。这种行为是故意的吗?在哪里记录了它?我发现这非常违反直觉。
答案1
TeX 扩展\thisrow{col2}
为-2
,因此最终看到的是
-2^2
按照惯例,-4
。其他情况也一样。
添加括号,如下所示,
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{filecontents}{data.dat}
col1 col2
-1 -2
0 -2
2 -3
\end{filecontents}
\begin{document}
\pgfplotstableread[col sep=space]{data.dat}\datatable
\begin{tikzpicture}
\begin{axis}[
xtick=data,
]
\addplot table[
x expr=\coordindex,
y expr={
(\thisrow{col2})^2
}
] {\datatable};
\end{axis}
\end{tikzpicture}
\end{document}
生产