使用 pgfplots 进行淡入淡出时,画布外的数据不会被删除

使用 pgfplots 进行淡入淡出时,画布外的数据不会被删除

我遇到了一个奇怪的问题,并能够将其追溯到我的绘图中使用淡入淡出的问题。我的工作流程用于pgfplots绘制我的数据,在编译后,我使用gs一些选项转换 pdf 文件。后面的部分允许我在光栅图像中拥有一致的 dpi 设置,而不管我在文档中进行的任何缩放。然而,这表明绘图数据在使用时仍然在文档中fadings,有时会跨越文档中的整个页面。

妇女权利委员会:

\documentclass[]{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}

\usetikzlibrary{fadings}
\pgfplotsset{compat=1.18}


\begin{filecontents}{data.txt}
 X    Y
-3    9      %  0 left out
-2    4      %  1 plotted
-1    1      %  2 plotted
-0.5  0.25   %  3 plotted
 0    0      %  4 plotted
 0.5  0.25   %  5 plotted
 1    1      %  6 left out
 2    4      %  7 left out
 3    9      %  8 left out
\end{filecontents}

\begin{document}


\begin{tikzpicture}
     \begin{axis}[xmax=1.5,
            %restrict x to domain*=-3:1.5
            ]
        \fill [red, opacity=.125, path fading=north] (axis cs:0,0) rectangle (axis cs:1,9);
        \addplot table {data.txt};
     \end{axis}
\end{tikzpicture}
    
text

\begin{tikzpicture}
    \begin{axis}[xmax=1.5]
        \fill [red, opacity=.125] (axis cs:0,0) rectangle (axis cs:1,9);
        \addplot table {data.txt};
    \end{axis}
\end{tikzpicture}
text

\end{document}

编译后的对话

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=300dpi.pdf test.pdf

表明数据仍然在文档内部:

虽然restrict to domain这看起来像是一个简单的解决方案,但这只会限制数据并导致错误的绘图。有没有一种简单的方法可以使用淡入淡出并仍然裁剪绘图之外的数据?

谢谢!

答案1

我不知道 gs 会用这个做什么,但是衰落不在轴环境内。

\documentclass[]{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}

\usetikzlibrary{fadings}
\pgfplotsset{compat=1.18}


\begin{filecontents}{data.txt}
 X    Y
-3    9      %  0 left out
-2    4      %  1 plotted
-1    1      %  2 plotted
-0.5  0.25   %  3 plotted
 0    0      %  4 plotted
 0.5  0.25   %  5 plotted
 1    1      %  6 left out
 2    4      %  7 left out
 3    9      %  8 left out
\end{filecontents}

\begin{document}


\begin{tikzpicture}
     \begin{axis}[xmax=1.5,
            %restrict x to domain*=-3:1.5
            name=border
            ]
        \coordinate (A) at (axis cs:0,0);
        \coordinate (B) at (axis cs:1,9);
        \addplot table {data.txt};
     \end{axis}
    \begin{scope}
      \clip (border.south west) rectangle (border.north east);
      \fill [red, opacity=.125, path fading=north] (A) rectangle (B);
    \end{scope}
\end{tikzpicture}
    
text

\begin{tikzpicture}
    \begin{axis}[xmax=1.5]
        \fill [red, opacity=.125] (axis cs:0,0) rectangle (axis cs:1,9);
        \addplot table {data.txt};
    \end{axis}
\end{tikzpicture}
text

\end{document}

相关内容