在 Latex 中创建通用图表

在 Latex 中创建通用图表

我想在 Latex 中创建一个类似于下图的图表。这是一个解释分段线性化的图表。我是 Latex 新手,我不确定如何开始,或者是否有其他方法可以创建此图像。

分段线性化

答案1

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{intersections,positioning,fit,shapes.geometric,calc}
\begin{document}
 \begin{tikzpicture}
  \draw[latex-latex] (0,6) node[left]{$y$} -- (0,0) coordinate(O) -- (8,0) node[below]{$x$};
  \draw[name path=curve] plot[variable=\x,domain=1:6] ({\x},{exp((\x-1)/6+(\x-1)^2/33)});
  \foreach \X [count=\Y]in {1,2.5,4,5.5}
  {\path[name path=vert-\Y] (\X,0) -- (\X,6);
   \draw[dashed, name intersections={of=curve and vert-\Y}]
   (O -| intersection-1) coordinate(b-\Y) -- (intersection-1) 
   coordinate(int-\Y) -- 
   (O |- intersection-1) coordinate(l-\Y);
   \ifnum\Y>1
    \pgfmathtruncatemacro{\Z}{\Y-1}
    \draw[-latex] ([yshift=0.5cm]b-\Z) --([yshift=0.5cm]b-\Y) node[midway,below]
    {$P_{i\Z}$};
    \draw[-latex] ([xshift=-0.15cm]l-\Z) --([xshift=-0.15cm]l-\Y) 
    node[midway,left]   {$\Delta Z_{i\Z}$};
    \draw[blue] (int-\Z) -- (int-\Y);
   \fi
  }
  \draw[-latex] ([xshift=-0.15cm]O) --([xshift=-0.15cm]l-1) 
    node[midway,left]   {$\Delta Z_{i\mathrm{unreadable}}$};
  \node[below=1mm of b-1] {$P_{i,\mathrm{min}}$};
  \node[below=1mm of b-4] {$P_{i,\mathrm{max}}$};
  \path let \p1=($(int-2)-(int-1)$),\n1={atan2(\y1,\x1)} in
  node[dashed,draw,ellipse,fit=(int-1) (int-2),rotate fit=\n1](ellipse){};
  \draw ($(int-1)+(0,2)$) coordinate (t1) -- ($(int-2)+(0,2)$) coordinate(t2);
  \draw[dashed] (t1) -- (t1 -| t2) node[midway,below] (P21) {$P_{21}$} 
  -- node[midway,right]{unreadable} (t2);
  \draw[-latex] (ellipse) -- (P21);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容