在 pgfplots 中使用 ymax 进行计算

在 pgfplots 中使用 ymax 进行计算

继续我的问题这里现在我想了解如何在用ymaxymin创建的新变量中使用 等值pgfmathparsepgfmathsetmacro那么,如果我知道\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=1ymax=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}

结果:

在此处输入图片描述

相关内容