继续我的问题这里现在我想了解如何在用ymax
或ymin
创建的新变量中使用 等值pgfmathparse
。pgfmathsetmacro
那么,如果我知道\pgfkeysvalueof{/pgfplots/ymax}
如何\pgfkeysvalueof{/pgfplots/ymin}
设置新变量\eh
?(ymax - ymin)/10
此代码:
\pgfmathsetmacro{\eh}{0.1*\pgfkeysvalueof{/pgfplots/ymax} -0.1*\pgfkeysvalueof{/pgfplots/ymin}}
给出错误消息:缺少数字,视为零。我想将其用作\eh
矩形的高度或其他坐标计算。
编辑:
根据要求添加了 MWE。
\documentclass{article}
\usepackage{pgfplots}
\usepackage{siunitx}
\usetikzlibrary{calc}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
\pgfkeys{
/pgf/number format/precision=1,
/pgf/number format/fixed zerofill=true }
\begin{axis}[
xmin=1,
xmax=4,
grid=both,
clip=false
]
\addplot[thick,red,domain=\pgfkeysvalueof{/pgfplots/xmin}:{\pgfkeysvalueof{/pgfplots/xmax}/1.3}] {x^2};
\draw [black, thick] (1,12.7) -- (2.5,12.7);
\draw [blue, thick] (0,\pgfkeysvalueof{/pgfplots/ymax}+0.3*\pgfkeysvalueof{/pgfplots/ymax}-0.3*\pgfkeysvalueof{/pgfplots/ymin}) -- (4,\pgfkeysvalueof{/pgfplots/ymax}+0.3*\pgfkeysvalueof{/pgfplots/ymax}-0.3*\pgfkeysvalueof{/pgfplots/ymin});
\end{axis}
\end{tikzpicture}
\end{document}
这是基于@koleygr 的回答。在这个特定示例中ymin=1
,ymax=10
用户并未明确设置它们。因此,蓝线和黑线应该具有相同的 y 坐标,但事实并非如此。如何通过设置包含所有谱表的新变量来简化输入\pgfkeysvalueof{/pgfplots/ymax}+0.3*\pgfkeysvalueof{/pgfplots/ymax}-0.3*\pgfkeysvalueof{/pgfplots/ymin}
?
理想情况下,我希望将对象(线条、矩形等)放置在主图上方(y=10
在此特定示例中为上方),并且这些对象移动的距离ymax
应取决于主图的大小,即y-coordinate-of-objects = ymax + 0.3*(ymax - ymin)
。
答案1
这就是你可以使用它的方法,以及你必须使用和了解的许多事情,例如:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{siunitx}
\usetikzlibrary{calc}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
\pgfkeys{
/pgf/number format/precision=1,
/pgf/number format/fixed zerofill=true }
\begin{axis}[
ymin=1,
ymax=10,
xmin=1,
xmax=4,
grid=both,
clip=false
]
\pgfmathsetmacro{\eh}{0.3*\pgfkeysvalueof{/pgfplots/ymax} -0.3*\pgfkeysvalueof{/pgfplots/ymin}}
\xdef\ehg{\num[round-mode=places, round-precision=1]{\eh}}
\addplot[thick,red,domain=\pgfkeysvalueof{/pgfplots/xmin}:{\pgfkeysvalueof{/pgfplots/xmax}/1.3}] {x^2};
\draw[-,thick,green] ($(\pgfkeysvalueof{/pgfplots/xmin},\eh)$) node[left] (A) {\ehg}
--($(\pgfkeysvalueof{/pgfplots/xmax},\eh)$);
\end{axis}
\end{tikzpicture}
value of macro=\ehg
\end{document}
结果: