Ocultar parte de una imagen

Ocultar parte de una imagen

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:

ingrese la descripción de la imagen aquí

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 betweenoperador.

Elmanual explica que las cosas dibujadas con el fill betweenoperador 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=mainpara 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}

ingrese la descripción de la imagen aquí

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}

Gráfico con agua y un barco.

\draw[cyan] plot[domain=0:12.18, samples=100, smooth, variable=\t] ({\t+.2*cos(\t*180-180)},{.3*sin(\t*180-120)+7});

Gráfico con agua ondulada y un barco.

información relacionada