我试图将两个不同函数的图放在一张图中,但第二个图没有显示在图中。有人发现了错误吗?代码如下:
\documentclass{article}
\usepackage{pgfplots}% This uses tikz
\pgfplotsset{compat=newest}% use newest version
\pgfmathdeclarefunction{FunctionA}{1}{%
\pgfmathparse{300 + 1000/x + 2.5*x}%
}
\pgfmathdeclarefunction{FunctionB}{1}{%
\pgfmathparse{290 + 1000/x + 2.45*x}%
}
\tikzset{My Line Style/.style={smooth, thick, samples=400}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0, xmax=750,
ymin=300, ymax=600,
axis x line=bottom,
axis y line=left,
xlabel= $y$
ylabel=Cost,]
\addplot[My Line Style, color=black, domain=0:250] (\x,{FunctionA(\x)});
\addplot[My Line Style, color=black, domain=250:500] (\x,{FunctionB(\x)});
\end{axis}
\end{tikzpicture}
\end{document}
\documentclass{article}
答案1
由于绘制了两个函数,并且它们具有不同的范围,因此需要两个(y 轴)坐标的绘图技巧。
这个想法是绘制两个相互叠在一起的轴。一个在左边,一个在右边。关键是scale only axis
在每个轴上放置相同的扩展域,以便 x 轴使用相同的扩展域。
axis y discontinuity
也在这里使用,以便更好地呈现情节。
代码
\documentclass{article}
\usepackage{pgfplots}% This uses tikz
\pgfplotsset{compat=newest}% use newest version
\pgfmathdeclarefunction{FunctionA}{1}{%
\pgfmathparse{300 + 1000/x + 2.5*x}%
}
\pgfmathdeclarefunction{FunctionB}{1}{%
\pgfmathparse{290 + 1000/x + 2.45*x}%
}
\tikzset{My Line Style/.style={smooth, thick, samples=400}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend style={at={(0.53,0.50)}, anchor=north west},
scale only axis,
xmin=0, xmax=750,
ymin=200,
axis y discontinuity=parallel,
axis x line=bottom,
axis y line=left,
xlabel= $y$,
ylabel=Cost,]
\addplot[My Line Style, color=black, domain=0:250] (\x,{FunctionA(\x)});
\legend{Function A}
\end{axis}
\begin{axis}[
legend style={at={(0.53,0.60)}, anchor=north west},
scale only axis,
xmin=0, xmax=750,
ymin=800,
axis y discontinuity=parallel,
axis x line=bottom,
axis y line=right,
xlabel= $y$,
ylabel=Cost]
\addplot[My Line Style, color=red, domain=250:500] (\x,{FunctionB(\x)});
\legend{Function B}
\end{axis}
\end{tikzpicture}
\end{document}