考虑以下 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}
我的输出是这样的(点击查看完整尺寸):
请注意,+
第一列(0-4)中的标记符号是对称的,然后第 5-9 列中的标记符号是不对称的,然后第 10 列中的标记符号又是对称的?这显然不是抗锯齿问题(全尺寸图像是 300 dpi 的 pdf 渲染)
更糟糕的是,如果我注释掉\begin{axis} %[only marks]
:
... 那么不知何故第 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}