如何避免在 pgfplots 填充周围出现阴影?

如何避免在 pgfplots 填充周围出现阴影?

如果我使用(例如) pgfplots 来遮蔽某个区域,则\addplot[shade, top color=cyan] fill between ...阴影区域的边界周围会有一条非常细的描边。

如何避免使用 pgfplots 在阴影区域边界周围绘制任何笔触fill between

在较暗的一侧,描边几乎难以察觉,但在较亮的一侧,当使用 mupdf 1.22.1、evince 43.0 和 firefox 115 进行栅格化时,描边就会显现出来。

使用检查由 poppler 23.05.0 生成的 SVG 文件pdftocairo -svg会发现一条指向文件末尾的路径,如果将该路径注释掉或者调整为fill:nonefill-opacity:0,边界描边就会消失:

<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="..."/>

我认为检查 LaTeX 的 PDF 或 DVI 输出会发现类似的情况,但它们不太适合人工检查。无论如何,我不确定如何返回找到 pgfplots 生成此笔画的位置。

  • 如果我改用\addplot[fill=cyan] fill between ...,边界笔划就会消失。

  • 如果我使用 ghostscript 10.01.2 栅格化为 png

    gs -dNOPAUSE -dBATCH -dSAFER -sDEVICE=png16m -r300 -sOutputFile=pgfplotsshadebetween.png pgfplotsshadebetween.pdf
    

    -r600或者使用像或 这样的更高分辨率-r2400,边界笔划就消失了。

  • 如果我使用 poppler 23.05.0 将其栅格化为 png pdftocairo -png,边界描边就会消失。

但这些要么改变情节,要么依赖于特定的光栅化器,而这些光栅化器不是通常用于在屏幕上读取 PDF 文档的光栅化器。


最小工作示例:

\documentclass{standalone}

\usepackage{pgfplots}
\usepackage{tikz}

\usepgfplotslibrary{fillbetween}

\pgfplotsset{compat=1.18}

\begin{document}

\begin{tikzpicture}
\begin{axis}
  \addplot[name path=rho, domain=0:1, opacity=0] {exp(-x)};
  \addplot[name path=zero, domain=0:1, opacity=0] {0};
  \addplot[shade, top color=cyan] fill between[of=rho and zero];
\end{axis}
\end{tikzpicture}

\end{document}

来自 mupdf 1.22.1 的屏幕截图(因为我能想到的常规光栅文件输出方法都没有显示笔划):

mupdf 1.22.1 查看 MWE 输出的屏幕截图

答案1

我没有对此进行广泛的测试,但我认为出现此描边的原因是一个渲染问题,该问题会随着缩放而变得或多或少可见。我检查了从您的代码生成的 PDF,似乎该区域的路径首先被填充为黑色,然后渐变被剪裁以适合其中的内容。

通过fill=none向相关命令添加选项\addplot,细笔画应该消失,并且无论缩放或输出为不同格式它都不应该是可见的。

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.18}

\begin{document}

\begin{tikzpicture}
    \begin{axis}
        \addplot[name path=rho, domain=0:1, opacity=0] {exp(-x)};
        \addplot[name path=zero, domain=0:1, opacity=0] {0};
        \addplot[fill=none, shade, top color=cyan] 
            fill between[of=rho and zero];
    \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容