
En el groupplot
entorno necesito usar fill between
dos caminos y uno de estos caminos tiene marcadores que están en los ejes. Quiero recortar estos marcadores pero causa un problema fill between
, ya que la primera ruta se considera vacía.
¿Cómo puedo recortar marcadores y usarlos fill between
?
A continuación se proporciona un MWE. Para ver el problema claramente, puede activar clip marker paths=true,
y desactivar la línea comentada. Si no está comentado, el problema está aquí.
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, pgfplots.groupplots}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[group style={group size=2 by 1}, scale only axis,
% clip marker paths=true,
axis on top=true]
% Plot main figure (a)
\nextgroupplot[scale only axis,
xmin=0,
xmax=100,
ymin=0,
ymax=550]
\addplot[name path = pathA, color=blue, mark=square*] coordinates {(0,250)(100,450)};
\path[name path = pathAxis] (axis cs:0,0) -- (axis cs:100,0);
\addplot [gray!30] fill between[of = pathA and pathAxis, soft clip = {domain=20:50}];
\nextgroupplot[scale only axis, restrict y to domain=190:240]
\end{groupplot}
\end{tikzpicture}
\end{document}
Respuesta1
Esto es sólo una solución alternativa. Agrega la trama dos veces, una de manera invisible para tener algo que pueda usarse para el relleno y otra "de verdad". (He experimentado un poco con clips y demás, pero nada de lo que apareció fue realmente más elegante que esta solución, así que lo publico. Obviamente espero que haya una solución más elegante).
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, pgfplots.groupplots}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[group style={group size=2 by 1}, scale only axis,
axis on top=true]
% Plot main figure (a)
\nextgroupplot[scale only axis,clip marker paths=true,
xmin=0,
xmax=100,
ymin=0,
ymax=550]
\addplot[color=blue, mark=square*] coordinates {(0,250)(100,450)};
\addplot[name path = pathA,draw=none,no marks,forget plot] coordinates {(0,250)(100,450)};
\path[name path = pathAxis] (axis cs:0,0) -- (axis cs:100,0);
\addplot [gray!30] fill between[of = pathA and pathAxis, soft clip = {domain=20:50}];
\nextgroupplot[scale only axis, restrict y to domain=190:240]
\end{groupplot}
\end{tikzpicture}
\end{document}