![Ocultar parte de uma imagem](https://rvso.com/image/472730/Ocultar%20parte%20de%20uma%20imagem.png)
Eu tenho esse código (adaptado depgfplot: Preencha entre enquanto inclui a função de decoração):
%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 produzem esta saída:
Quero esconder a parte do barco debaixo d'água. Eu tentei com opaque
, opacity=
,..., mas sem resultados desejados.
Responder1
Como foi observado emestas perguntas e respostas, você precisa definir a camada para os itens desenhados com o fill between
operador.
Omanual explica que as coisas desenhadas com o fill between
operador são, por padrão, colocadas em uma camada que fica "entre a camada principal e a camada de fundo". Então, você pode usar fill between/on layer=main
para mudar isso para a camada onde todas as outras coisas são desenhadas. Eu também acrescentaria 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}
Responder2
\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});