pgfplots 中 mark=+ 的渲染有问题

pgfplots 中 mark=+ 的渲染有问题

考虑以下 MWE:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}

\pgfplotsset{compat=1.5.1}

\xdef\doPlotCoords{}
\foreach \r in {0,1,...,10}{%
  \xdef\tempCoords{} %
  \foreach \c in {0,1,...,10}{ %
    \xdef\tempCoords{\tempCoords (\r,\c)\space}
  } % end \foreach \c
  \let\addplot\relax
  \xdef\doPlotCoords{ \doPlotCoords
  \addplot+[color=blue,mark=+,mark options={blue},] coordinates{ \tempCoords };}
} % end \foreach \r
\typeout{\meaning\doPlotCoords}

\begin{document}
\begin{tikzpicture}
\begin{axis}[only marks]
\doPlotCoords
\end{axis}
\end{tikzpicture}

\end{document}

我的输出是这样的(点击查看完整尺寸):

测试71.png

请注意,+第一列(0-4)中的标记符号是对称的,然后第 5-9 列中的标记符号是不对称的,然后第 10 列中的标记符号又是对称的?这显然不是抗锯齿问题(全尺寸图像是 300 dpi 的 pdf 渲染)

更糟糕的是,如果我注释掉\begin{axis} %[only marks]

测试72.png

... 那么不知何故第 5-9 列是虚线,而其余的不是??

这是怎么回事——我怎样才能让图表显示所有+标记在各处都相同(与第一列对称),并且它们之间的所有线也相同?

答案1

CW 来自评论:

使用\addplot+意味着样式选项是附加为默认样式 (a cycle list)。因此,color默认循环列表指定的 将被覆盖,blue但其他选项(即线型/虚线)不会被覆盖。

只需使用即可解决问题\addplot(除非您确实只想附加选定的选项,在这种情况下您需要添加所有您不想更改的内容):

\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}

\pgfplotsset{compat=1.5.1}

\xdef\doPlotCoords{}
\foreach \r in {0,1,...,10}{%
  \xdef\tempCoords{} %
  \foreach \c in {0,1,...,10}{ %
    \xdef\tempCoords{\tempCoords (\r,\c)\space}
  } % end \foreach \c
  \let\addplot\relax
  \xdef\doPlotCoords{ \doPlotCoords
  \addplot[color=blue,mark=+,mark options={blue},] coordinates{ \tempCoords };}
} % end \foreach \r
\typeout{\meaning\doPlotCoords}

\begin{document}
\begin{tikzpicture}
\begin{axis}[only marks]
\doPlotCoords
\end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容