我需要制作一个如图所示的图表,但我尝试了很多方法,但还是无法得到我想要的结果。你们有人能帮助我吗?
答案1
此解决方案假设图是对称的(但虚线图是不对称的)。由于没有给出实际函数,此解决方案提供了一种可能的绘制思路。使用函数 (x, 4-1/x) 的 pgfpplots 并使用关于 y 的对称属性的解决方案。
代码
\documentclass{article}
\usepackage[margin=1cm,paper size={15cm,10cm}]{geometry}
\thispagestyle{empty}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=0.01:4, samples=100,grid=major,
restrict y to domain=-4:4,xlabel=$x$,ylabel=$y(x)$, legend pos=north west]
\addplot[red] (x,4-1/x);
\addplot[red] (-x,4-1/x);
\addplot[dashed] (-x,4-3/x); % for non-symmetric branch
\end{axis}
\end{tikzpicture}
\end{document}
答案2
使用 PSTricks 轻松定制的模板。
\documentclass[pstricks,border=0pt,12pt,dvipsnames]{standalone}
\usepackage{amsmath}
\usepackage{pst-plot}
\usepackage[nomessages]{fp}
\FPeval\XMin{0-3}
\FPeval\XMax{3}
\FPeval\YMin{0-3}
\FPeval\YMax{4.5}
\FPeval\XOL{0-1/3} % of DeltaX
\FPeval\XOR{1/3} % of DeltaX
\FPeval\YOB{0-1/3} % of DeltaY
\FPeval\YOT{1/3} % of DeltaY
%\FPset\TrigLabelBase{3}
\FPeval\DeltaX{1}
\FPeval\DeltaY{.5}
\FPeval\AxisL{XMin+DeltaX*XOL}
\FPeval\AxisR{XMax+DeltaX*XOR}
\FPeval\AxisB{YMin+DeltaY*YOB}
\FPeval\AxisT{YMax+DeltaY*YOT}
\newlength\Width\Width=10cm
\newlength\Height\Height=8cm
\newlength\llx\llx=-5pt
\newlength\urx\urx=15pt
\newlength\lly\lly=-5pt
\newlength\ury\ury=15pt
\psset
{
llx=\llx,
lly=\lly,
urx=\urx,
ury=\ury,
%xtrigLabels=true,
%ytrigLabels=true,
%trigLabelBase=\TrigLabelBase,
labelFontSize=\scriptstyle,
xAxisLabel=$x$,
yAxisLabel=$y$,
algebraic,
plotpoints=100,
}
\def\f{4-1/abs(x)}
\begin{document}
\pslegend[rt]{%
\color{NavyBlue}\rule{12pt}{1pt} & \color{NavyBlue} $y=4-1/\lvert x\rvert$ \\
\color{Red}\rule{12pt}{1pt} & \color{Red} $y=4$
}
\begin{psgraph}
[
dx=\DeltaX,
dy=\DeltaY,
Dx=\DeltaX,
Dy=\DeltaY,
linecolor=gray,
tickcolor=gray,
ticksize=-3pt 3pt,
axespos=top,
]{<->}(0,0)(\AxisL,\AxisB)(\AxisR,\AxisT){\dimexpr\Width-\urx+\llx}{!}%{\dimexpr\Height-\ury+\lly}
\psaxes
[
dx=\DeltaX,
dy=\DeltaY,
labels=none,
subticks=5,
tickwidth=.4pt,
subtickwidth=.2pt,
tickcolor=Red!30,
subtickcolor=ForestGreen!30,
xticksize=\YMin\space \YMax,
yticksize=\XMin\space \XMax,
subticksize=1,
](0,0)(\XMin,\YMin)(\XMax,\YMax)
\psclip{\psframe[linestyle=none,linewidth=0](\XMin,\YMin)(\XMax,\YMax)}
\psplot[linecolor=NavyBlue]{\XMin}{-0.1}{\f}
\psplot[linecolor=NavyBlue]{0.1}{\XMax}{\f}
\psplot[linecolor=Red]{\XMin}{\XMax}{4}
\endpsclip
\end{psgraph}
\end{document}