答案1
我不知道如何使用 tikz 来实现这一点,但由于您到目前为止还没有得到答案,我向您介绍了如何在 MetaFun 中实现类似功能。这可能会让您了解如何使用 tikz。路径fun
是您的函数,N
是颜色的数量。
\startMPpage[offset=1dk]
numeric u ; u := 1cm ;
path fun ; fun := ((0.2,-0.2){right} ..
(3.5,5.5){right} ..
(6,2.3){right} ..
(9,3.1){right} ..
{dir -30}(12,-0.25)) ;
numeric miny ; miny := 0 ;
numeric maxy ; maxy := ypart urcorner boundingbox fun ;
numeric N ; N := 8 ;
numeric level[] ;
rgbcolor levelcolor[] ;
path ip[] ;
path tmppath ;
for i = 1 upto N :
level[i] := miny + (maxy - miny)*i/N ;
message(level[i]) ;
% levelcolor[i] := (i/N)[red,yellow] ;
levelcolor[i] := ( uniformdeviate(1), uniformdeviate(1), uniformdeviate(1) ) ;
ip[i] := fun firstintersectionpath ((-infinity,level[i]) -- (infinity,level[i])) ;
endfor
for i = 1 upto N :
for j = 0 step 2 until (length(ip[i]) - 1) :
tmppath := ( (point j of ip[i]) --
(point (j + 1) of ip[i]) --
(xpart point (j + 1) of ip[i], 0) --
(xpart point j of ip[i], 0) --
cycle ) ;
% unfill tmppath ; % no gain
fill tmppath scaled u withcolor levelcolor[i] ;
endfor
if i < N :
draw ((0,level[i]) -- (0, level[i+1])) scaled u withpen pencircle scaled 2 withlinecap butt withcolor levelcolor[i] ;
fi
endfor ;
draw fun scaled u ;
drawdoublearrow ( (0,6) -- origin -- (13,0) ) scaled u ;
\stopMPpage
将文件另存为lebesgue.tex
并运行以context lebesgue.tex
获取lebesgue.pdf
。使用N = 8
我们得到
颜色是随机的。N = 25
我们得到
最后,通过改变的定义levelcolor[i]
,我们得到