评估函数并分配给常数以用作 Tikz/pgfplots 中的刻度标记

评估函数并分配给常数以用作 Tikz/pgfplots 中的刻度标记

我正在定义一些函数来使用 pgfplots 进行绘图,并且已经成功。现在我想在使用这些函数(下面的 lbound)评估的点处添加一个 y 刻度。但是我似乎无法将 lbound 用作常量。这是为了标记水平图与 y 轴相交的点。我应该怎么做?

\begin{tikzpicture}[
    declare function={
        tmin = 0;
        tmax = 1;
        C(\x) = (\x)^2;
        Cinv(\x) = (\x)^(1/2);
        ell(\theta,\tau,\K) = 1 - Cinv( (- (\tau * \theta) / (tmax - tmin) + \K) );
        lbound = ell(1, 0.8, C(1) + 0.8 * tmin / (tmax - tmin));
  }
    ]

    \begin{axis}[
            ytick={0,1},
            yticklabels={$0$,$1$}
            ]
        \addplot[dashed, thick, domain=0:1]{ell(1, 0.8, C(1) + 0.8 * tmin / (tmax - tmin))};
    \end{axis}
\end{tikzpicture}

答案1

欢迎来到 TeX.SE!我不明白问题是什么。我可以y使用您的常量设置一个勾号。这个问题似乎与版本号有关。(我在写我的第一个版本的答案时并不知道这一点。)使用 1.16 版 pgfplots,它可以以简单的方式工作。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[
    declare function={
        tmin = 0;
        tmax = 1;
        C(\x) = (\x)^2;
        Cinv(\x) = (\x)^(1/2);
        ell(\theta,\tau,\K) = 1 - Cinv( (- (\tau * \theta) / (tmax - tmin) + \K) );
        lbound = ell(1, 0.8, C(1) + 0.8 * tmin / (tmax - tmin));
  }
    ]

    \begin{axis}[
            ymin=-0.5,ymax=1.5,
            ytick={0,lbound,1},
            yticklabels={$0$,$\ell$,$1$}
            ]
        \addplot[dashed, thick, domain=0:1]{ell(1, 0.8, C(1) + 0.8 * tmin / (tmax - tmin))};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

无论我是否设置ymin和,这都有效ymax

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[
    declare function={
        tmin = 0;
        tmax = 1;
        C(\x) = (\x)^2;
        Cinv(\x) = (\x)^(1/2);
        ell(\theta,\tau,\K) = 1 - Cinv( (- (\tau * \theta) / (tmax - tmin) + \K) );
        lbound = ell(1, 0.8, C(1) + 0.8 * tmin / (tmax - tmin));
  }
    ]

    \begin{axis}[
%           ymin=-0.5,ymax=1.5,
            ytick={0,lbound,1},
            yticklabels={$0$,$\ell$,$1$}
            ]
        \addplot[dashed, thick, domain=0:1]{ell(1, 0.8, C(1) + 0.8 * tmin / (tmax - tmin))};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容