我想要的是
可以通过以下代码绘制。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0, xmax=4, ymin=-1, ymax=1]
\pgfmathsetmacro{\myresultA}{1}
\fill (\myresultA,0) circle [radius=5pt];
\pgfmathsetmacro{\myresultB}{2}
\fill (\myresultB,0) circle [radius=5pt];
\pgfmathsetmacro{\myresultC}{3}
\fill (\myresultC,0) circle [radius=5pt];
% Many more \fill and \draw commands which require unique coordinate calculation here
\end{axis}
\end{tikzpicture}
\end{document}
我想避免为每个 pgfmath 计算使用单独的变量名,因为我有很多计算需要计算。不幸的是,代码
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0, xmax=4, ymin=-1, ymax=1]
\pgfmathsetmacro{\myresult}{1}
\fill (\myresult,0) circle [radius=5pt];
\pgfmathsetmacro{\myresult}{2}
\fill (\myresult,0) circle [radius=5pt];
\pgfmathsetmacro{\myresult}{3}
\fill (\myresult,0) circle [radius=5pt];
% Many more \fill and \draw commands which require unique coordinate calculation here
\end{axis}
\end{tikzpicture}
\end{document}
只是给我
如何在没有单独结果变量的情况下进行大量计算?更好的方法是不使用任何结果变量进行内联计算?有没有什么巧妙的方法?当然,这只是我真正喜欢画的一个小例子。所以我的问题更多的是概念性的。
答案1
我不是 pgfplots 专家,但看起来 pgfplots 延迟了该\fill
命令。因此它首先运行这三个命令\pgfmathsetmacro
,然后运行这三个\fill
命令。
\pgfextra
为了解决这个问题,你可以像这样进行计算:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0, xmax=4, ymin=-1, ymax=1]
\fill \pgfextra{\pgfmathsetmacro{\myresult}{1}}
(\myresult,0) circle [radius=5pt];
\fill \pgfextra{\pgfmathsetmacro{\myresult}{2}}
(\myresult,0) circle [radius=5pt];
\fill \pgfextra{\pgfmathsetmacro{\myresult}{3}}
(\myresult,0) circle [radius=5pt];
\end{axis}
\end{tikzpicture}
\end{document}