![评估函数并分配给常数以用作 Tikz/pgfplots 中的刻度标记](https://linux22.com/image/382931/%E8%AF%84%E4%BC%B0%E5%87%BD%E6%95%B0%E5%B9%B6%E5%88%86%E9%85%8D%E7%BB%99%E5%B8%B8%E6%95%B0%E4%BB%A5%E7%94%A8%E4%BD%9C%20Tikz%2Fpgfplots%20%E4%B8%AD%E7%9A%84%E5%88%BB%E5%BA%A6%E6%A0%87%E8%AE%B0.png)
我正在定义一些函数来使用 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!我不明白问题是什么。我可以这个问题似乎与版本号有关。(我在写我的第一个版本的答案时并不知道这一点。)使用 1.16 版 pgfplots,它可以以简单的方式工作。y
使用您的常量设置一个勾号。
\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}