![Ocultar parte de una imagen](https://rvso.com/image/472730/Ocultar%20parte%20de%20una%20imagen.png)
Tengo este código (adaptado depgfplot: Rellenar entre mientras incluye la función de decoración):
%https://tex.stackexchange.com/questions/671424/pgfplot-fill-between-while-including-decoration-function
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
xmin=0, xmax=12.5,
ymin=0, ymax=15,
]
\fill[blue!60] (7,7.8)--(8.3,7.8)--(7,9.5)--cycle;
\draw[violet,line width=3pt] (7,7.5)--(7,10);
\filldraw[brown!40,draw=blue,line width=2pt] (6,6.5)--(5.5,7.5)--(8.5,7.5)--(8,6.5)--cycle;
\node at (6.3,7.2) () {\tiny \LaTeX};
\draw[name path=line] (0,0) -- (12,0);
\addplot[
name path=plot,
cyan,
domain=0:12,
preaction={decorate},
samples=100,
% decoration={markings, mark=between positions 0.05 and 1 step (1/12)*\pgfdecoratedpathlength with {\arrow{latex}}}, % commenta questa linea se non vuoi le frecce
] {.1*sin(3*x*180/pi)+7};
\addplot[fill=cyan!40] fill between[of=line and plot,overlay];
\end{axis}
\end{tikzpicture}
\end{document}
que producen esta salida:
Quiero esconder la parte del barco bajo el agua. Lo intenté con opaque
, opacity=
,..., pero no obtuve los resultados deseados.
Respuesta1
Como se ha señalado enestas preguntas y respuestas, necesitas configurar la capa para las cosas dibujadas con el fill between
operador.
Elmanual explica que las cosas dibujadas con el fill between
operador se colocan de forma predeterminada en una capa que se encuentra "entre la capa principal y la capa de fondo". Entonces, puedes usar fill between/on layer=main
para cambiar esto a la capa donde se atraen todas las demás cosas. También agregaría axis on top
:
%https://tex.stackexchange.com/questions/671424/pgfplot-fill-between-while-including-decoration-function
\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
xmin=0, xmax=12.5,
ymin=0, ymax=15,
axis on top,
fill between/on layer=main
]
\fill[blue!60] (7,7.8) -- (8.3,7.8) -- (7,9.5) -- cycle;
\draw[violet, line width=3pt] (7,7.5) -- (7,10);
\filldraw[brown!40, draw=blue, line width=2pt]
(6,6.5) -- (5.5,7.5) -- (8.5,7.5) -- (8,6.5) -- cycle;
\node at (6.3,7.2) () {\tiny \LaTeX};
\draw[name path=line] (0,0) -- (12,0);
\addplot[
name path=plot,
cyan,
domain=0:12,
preaction={decorate},
samples=100,
] {.1*sin(3*x*180/pi)+7};
\addplot[fill=cyan!40, opacity=0.5] fill between [of=line and plot];
\end{axis}
\end{tikzpicture}
\end{document}
Respuesta2
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
axis on top,
xmin=0, xmax=12.5,
ymin=0, ymax=15,
]
\fill[blue!60] (7,7.8) -- (8.3,7.8) -- (7,9.5) --cycle;
\draw[violet, line width=3pt] (7,7.5) -- (7,10);
\filldraw[blue, fill=brown!40, line width=2pt] (6,6.5) -- (5.5,7.5) -- (8.5,7.5) -- (8,6.5) --cycle;
\node at (6.3,7.2) {\tiny \LaTeX};
\fill[cyan!40, opacity=0.5] plot[domain=0:12, smooth] (\x,{.1*sin(3*\x*180/pi)+7}) |- (current axis.south) -|cycle;
\draw[cyan] plot[domain=0:12, smooth] (\x,{.1*sin(3*\x*180/pi)+7});
\end{axis}
\end{tikzpicture}
\end{document}
\draw[cyan] plot[domain=0:12.18, samples=100, smooth, variable=\t] ({\t+.2*cos(\t*180-180)},{.3*sin(\t*180-120)+7});