tikz 中的绘图函数

tikz 中的绘图函数

我需要制作一个如图所示的图表,但我尝试了很多方法,但还是无法得到我想要的结果。你们有人能帮助我吗?在此处输入图片描述

答案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}

在此处输入图片描述

相关内容