我有以下 MWE:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[%
xmin = 0, xmax = 1,
xtick={0,0.2,0.4,0.6,0.8,1},
xlabel={$\lambda$},
xmajorgrids,
ymin = 0, ymax = 100,
ytick={20,40,50,80,100},
ylabel={$\Sigma$},
ymajorgrids,
axis background/.style={fill=white}]
\addplot [forget plot, color=black,solid,line width=0.5pt] {10*x + 1}
\end{axis}
\end{tikzpicture}
\caption{Series up to a rounded integer\label{fig:X}}
\end{figure}
\end{document}
现在,我想要绘制一个函数,对于每个 x 值,计算实数 R = 10*x + 1,然后将 R 四舍五入为最接近的整数值 Z,最后计算序列 S = 1 + 2 + 3 + ... + Z。如您所见,R 很容易计算。我遇到的问题是四舍五入 R 并计算 S。有没有一种在 LaTeX/pgfplots 上执行此操作的综合方法?我当然可以在 Matlab(或 Python 等)上非常直接地进行这些计算,然后将得到的一组 x 和 S 值存储在一个文件中,并在 LaTeX/pgfplots 上绘制该文件中包含的值,但我更希望有一个更直接的解决方案。
答案1
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0, xmax=1,
ymin=0, ymax=100,
xtick distance=0.2, ytick distance=20,
xlabel={$\lambda$}, ylabel={$\Sigma$},
xmajorgrids, ymajorgrids,
axis background/.style={fill=white},
]
\addplot[red, domain=0:1, samples=100, thick] {10*x+1};
\addplot[green, domain=0:1, samples=100, const plot, thick] {round(10*x+1)};
\addplot[blue, domain=0:1, samples=100, const plot, thick] {0.5*round(10*x+1)^2+0.5*round(10*x+1)};
\end{axis}
\end{tikzpicture}
\end{document}