我尝试绘制以下函数,但没有成功:
y = 300 + 1000/x + 2.5x
。
这是文档,但它没有显示图表,而是仅显示了轴。
\documentclass{article}
\usepackage{pgfplots}% This uses tikz
\pgfplotsset{compat=newest}% use newest version
\pgfmathdeclarefunction{Function}{1}{%
\pgfmathparse{300 + 1000/x + 2.5}%
}
\tikzset{My Line Style/.style={smooth, thick, samples=400}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0.0,
xmax=250,
ymin=0,
ymax=50,
axis x line=bottom,
axis y line=left,
xlabel= $y$,
ylabel=Cost,
xtick={250},
xticklabels={250},
restrict x to domain=0:250,
]
\addplot+[My Line Style, color=black, samples at={1,2,3,4,...,249,250}] (\x,{Function(\x)});
\end{axis}
\end{tikzpicture}
\end{document}
\documentclass{article}
答案1
根据评论中的信息回答。
我设置了compat=1.9
,这样compat=newest
即使将来的更新破坏了兼容性,该解决方案也能起作用。
我还更新了函数的声明,以匹配问题文本中所写的内容。 在您的风格中My Line Style
,samples=400
是多余的,因为您samples at=<...>
在下面使用。
问题是ymax=50
,它剪辑了图,没有显示任何函数。我已将其注释掉以自动设置限制,但您也可以将其更改为更合适的值。
我还调整了的内容以samples at=<...>
产生(在我看来)更好的标记间距。您也可以使用 Jake 的建议samples at={1,...,250}
,或者等效地,samples=250, domain=0:250
。
代码
\documentclass{article}
\usepackage{pgfplots}% This uses tikz
\pgfplotsset{compat=1.9}% use current version at time of writing
\pgfmathdeclarefunction{Function}{1}{%
\pgfmathparse{300 + 1000/x + 2.5*x}% corrected to written form in question text
}
\tikzset{My Line Style/.style={smooth, thick}} % samples=400 is redundant since you specify samples at below
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0.0,
xmax=250,
ymin=0,
%ymax=50, % <<< this was the problem
axis x line=bottom,
axis y line=left,
xlabel= $y$,
ylabel=Cost,
xtick={250},
xticklabels={250},
restrict x to domain=0:250,
]
\addplot+[My Line Style, color=black, samples at={1,2,3,4,6,9,16,...,250}] (\x,{Function(\x)});
\end{axis}
\end{tikzpicture}
\end{document}