自定义网格上的直线图

自定义网格上的直线图

尽管 SE 上有很多问题和答案,但我无法自定义我尝试绘制的以下图表。

我正在尝试使用 pgfplot 绘制原始图像

我目前的努力是:

我迄今为止编写的基本 LaTeX 代码

上图的代码是:

\begin{tikzpicture}
\begin{axis}[grid=both,
            grid style={line width=.5pt, draw=black!30},
            major grid style={line width=.5pt,draw=black!30}, 
            clip=false,
            xmin=0,xmax=65,
            ymin=0,ymax=55,
            enlargelimits={abs=0.5},
            xtick={0,5,10,15,20,25,30,35,40,45,50,55,60},
            ytick={0,10,20,30,40,50},
            xticklabels={\empty},
            yticklabels={,,},
            extra x ticks={0,5,10,15,20,25,30,35,40,45,50,55,60},
            extra x tick labels={,,,,,$25$,$30$,$35$,$40$,$45$,$50$,$55$,$60$},
            extra y ticks={{0,10,20,30,40,50}},
            extra y tick labels={,$10$,$20$,$30$,$40$,$50$},
            minor x tick num=1,
            minor y tick num=1,
            axis lines=left,
            axis x discontinuity=crunch
]
\addplot[latex-latex, samples=2,domain=23:58] coordinates {(23,19) (25,20) (50,35) (58.5,40) };
\end{axis}
\end{tikzpicture}

需要定制:

  • 直线与 y 轴在 14 左右相交。
  • 从负 x 轴以外 <25 处开始的虚线。
  • 减少 x 轴 0 和 25 值之间的差距。

任何帮助,将不胜感激。

答案1

对于第三点,你需要做的就是修改xmin

看看你的图片,前两个点不是同一个问题吗?无论如何,一个选项可能是计算通过第一个和最后一个坐标的直线方程,然后使用它绘制一条从 x=10 到 x=23 的虚线。

注意我大大简化了您的刻度设置,并将axis lines设置更改为middle

代码输出

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
   grid=both,
   grid style={line width=.5pt, draw=black!30},
   major grid style={line width=.5pt,draw=black!30}, 
   clip=false,
   xmin=20, % modified
   xmax=64,
   ymin=0,ymax=54,
   xtick distance=5,  % added
   ytick distance=10,  % added
   minor x tick num=1,
   minor y tick num=1,
   axis lines=middle, % changed to middle
   axis x discontinuity=crunch
]
%\addplot[latex-latex] coordinates {(23,19) (25,20) (50,35) (58.5,40) };

% equation of line calculated based on (23,19) and (58.5,40) 
\addplot[latex-latex, samples at={23,58.5}] {0.59155*x + 5.394366};
\addplot[densely dashed, samples at={10,23}] {0.59155*x + 5.394366};
\end{axis}
\end{tikzpicture}
\end{document}​

相关内容