如何从 y 轴绘制到图形的水平箭头?

如何从 y 轴绘制到图形的水平箭头?

我想绘制与下图类似的图像。可以在 TikZ 中做到这一点吗?

在此处输入图片描述

答案1

作为起点:

\documentclass[tikz,
               border=3mm,
               ]{standalone}
\usetikzlibrary{arrows.meta,
                intersections,
                }

\begin{document}
    \begin{tikzpicture}
\draw[->]   (-0.1, 0) -- (3,0) node[below left] {$x$};
\draw[->]   (0, -0.1) -- (0,4) node[below left] {$y$};
%
\draw[name path=A,
      red, very thick]  (0,0) .. controls +(2,1) and +(0,-1) .. (2,4);
      \foreach \i [count=\ix] in {0.5,1,...,3.5}
{
\path[name path=B\ix]   (0,\i) -- + (3,0);
\draw[name intersections={of=A and B\ix, by={a}}];
\draw[thick,-{Triangle[]}]         (0,\i) -- (a);
}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

画一条虚线我留给你……

答案2

平淡地元帖子有两个宏,称为cutbeforecutafter,可以帮助这种类型的绘图。

带有箭头的红色曲线

这是由以下材料制成的:

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);

numeric u;
u = 1cm;

path xx, yy, ff;
xx = (left--3 right) scaled u;
yy = (origin--4 up)  scaled u;
ff = origin .. {up} (2.5u,4u);

draw ff withcolor .67 red;

for t=1 upto 8:
  drawarrow xx shifted (0,1/2t*u)
            cutbefore yy
            cutafter ff;
endfor

draw xx;
draw yy;

endfig;
end.

为了绘制箭头,我重用了xx为 x 轴创建的路径。在循环的每个步骤中,它都会向上移动,并在 y 轴和曲线处切断,然后再绘制。

补充笔记

普通的 Metapost 定义了leftto be (-1,0)rightto be (1,0)upas(0,1)downas (0,-1)。我发现当我写4 up而不是 时,我会更不容易困惑(0,4)

我先画了ff曲线,这样箭头尖就在上面。这样看起来比在下面要好。但为了更专业,最好稍微缩短箭头。你可以通过将切断它们的线向左移动一点来做到这一点。所以如果你替换

cutafter ff;

cutafter ff shifted 2/3 left;

你会得到这个稍微简洁的结果:

在此处输入图片描述

答案3

PSTricks 解决方案。

\documentclass{article}

\usepackage{pst-plot}

\begin{document}

\begin{pspicture}(-0.2,-0.2)(2.2,4.5)
  \psaxes[
    labels = none,
    ticks = none
  ]{->}(0,0)(-0.2,-0.2)(2.2,4.5)
  \psplot[
    linecolor = red
  ]{0}{2.1}{x dup mul}
  \multido{\r = 0.4+0.4}{10}{\psline{->}(0,\r)(!\r\space sqrt \r\space)}
\end{pspicture}

\end{document}

输出

请注意,\r\space sqrt(在 PostScript 符号中)是(在 PostScript 符号中)sqrt(\r)的反函数。x dup mulx^2

相关内容