在尝试使用 pgfplots 创建绘图时,我注意到由创建的输出ghostscript和
gs -o main_opt.pdf -sDEVICE=pdfwrite main.pdf
优化 PDF(尺寸缩小至约 50%)与原始 PDF 不同。在图例中,绘图标记的边框从重置solid
为相应的线条样式。
我的调查提示我注意透明度和后记的问题。不幸的是,我认为透明度在axis line on top
样式以避免轴、刻度和刻度标签的双重绘制。
transparent
这里可能存在什么确切的问题?为什么当我附加到tick style
(请参阅下面的 MWE)时,情节标记会中断?
是否还有其他不带透明度的解决方案,如“dontdraw”/“draw”开关,类似于“transparent”/“opaque”?
下面的示例不包含axis line on top
样式但确实重现了问题:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
tick style=transparent,
legend entries={1,2,3,4},
xmin=0,xmax=1,ymin=0,ymax=1
]
\addplot+[thick,solid, mark options=solid,mark=*] coordinates {(0,0) (0.5,0.2) (1,1)};
\addplot+[thick,densely dashed, mark options=solid,mark=square*] coordinates {(0,0) (0.5,0.4) (1,1)};
\addplot+[thick,densely dotted, mark options=solid,mark=triangle*] coordinates {(0,0) (0.5,0.6) (1,1)};
\addplot+[thick,densely dashdotted,mark options=solid,mark=diamond*] coordinates {(0,0) (0.5,0.8) (1,1)};
\end{axis}
\end{tikzpicture}
\end{document}
更新:感谢@cfr,我可以重写样式axis line on top
以满足我的需求。我禁用了处理,ticklabel style
因为我不需要它,而重新启用它ticklabel style=draw
实际上会在它们周围绘制方框。
\makeatletter \newcommand{\pgfplotsdrawaxis}{\pgfplots@draw@axis} \makeatother
\pgfplotsset{axis line on top/.style={
%% before
%axis line style=transparent,
%ticklabel style=transparent,
%tick style=transparent,
%% now
axis line style={draw=none},
tick style={draw=none},
axis on top=false,
after end axis/.append code={
\pgfplotsset{
%% before
%axis line style=opaque,
%ticklabel style=opaque,
%tick style=opaque,
%% now
axis line style=draw,
tick style=draw,
grid=none}
\pgfplotsdrawaxis}
}
}