答案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
平淡地元帖子有两个宏,称为cutbefore
和cutafter
,可以帮助这种类型的绘图。
这是由以下材料制成的:
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 定义了left
to be (-1,0)
、right
to be (1,0)
、up
as(0,1)
和down
as (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 mul
x^2