pgfplots 透明度过高

pgfplots 透明度过高

我尝试将包含透明度的 png 嵌入到 pgfplots 中。问题是,透明度仅围绕 png 的主要对象。但是,正如 MWE 所展示的,它似乎也影响整个 PNG。我怎样才能让附图中的红点覆盖其后面的点?

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}

\begin{axis}[%
width=6cm,
axis equal image,
scale only axis,
xmin=0.5,xmax=100.5,%
ymin=0.5,
ymax=100.5
]

\addplot[color=blue,
only marks,
mark size=0.4pt,
mark=*,
mark options={solid}]
table[row sep=crcr] {
10 10\\
50 50\\
};


\addplot[] graphics[xmin=0.5,xmax=100.5,%
ymin=0.5,
ymax=100.5
]{transparancyinpgfplots.png};

\end{axis}
\end{tikzpicture}%
\end{document}

包括图片

答案1

问题不在于 PNG 是透明的,而在于绘图标记绘制在其他所有图形之上(这是设计使然,因此标记不会被其他绘图的线条遮挡)。您可以通过设置 来更改此行为clip mode=individual,因此所有绘图都按照您指定的顺序绘制:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}

\begin{axis}[%
width=6cm,
axis equal image,
scale only axis,
xmin=0.5,xmax=100.5,%
ymin=0.5,
ymax=100.5,
clip mode=individual
]

\addplot[color=blue,
only marks,
mark size=0.4pt,
mark=*,
mark options={solid}]
table[row sep=crcr] {
10 10\\
50 50\\
};


\addplot graphics[xmin=0.5,xmax=100.5,%
ymin=0.5,
ymax=100.5
]{transparency.png};

\end{axis}
\end{tikzpicture}%
\end{document}

相关内容