我使用带有散点(2d)的网格图,其中颜色由数据的第三个坐标确定正如这个问题所述。但是,图例应包含曲线标记作为图标(而不是微型网格)。我该如何实现?
编辑:问题似乎出legend image code
在line legend
无法使用网格设置正确绘制。我该如何修改自定义legend image code
以仅以固定颜色(例如黑色)显示当前标记?
我迄今为止的尝试
\pgfplotsset{
/pgfplots/pplots legend/.style={
legend image code/.code={
\draw[color=black] (0cm,0cm) to (0.6cm,0cm);
\draw[#1,color=black,mark repeat=1,mark phase=1]
plot coordinates {
(0.3cm,0cm)
};
}}}
由于编译错误而失败:
Undefined control sequence. [...] \pgfplotsplothandlermesh@numpoints ->\numcoords
答案1
使用上述设置,图例将继承绘图的当前设置(通常是所需的)。在您的例子中,您需要覆盖剧情处理者明确地通过提供sharp plot
(或者可能only marks
?)到图例的选项列表:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\thispagestyle{empty}
\pgfplotsset{
/pgfplots/pplots legend/.style={
legend image code/.code={
\draw[color=black] (0cm,0cm) to (0.6cm,0cm);
\draw[sharp plot,mark=*,color=black,mark repeat=1,mark phase=1]
plot coordinates {
(0.3cm,0cm)
};
}}}
\begin{tikzpicture}
\begin{axis}[legend entries=$x^2y^2$]
\addplot3[surf,pplots legend] {x^2*y^2};
\end{axis}
\end{tikzpicture}
\end{document}
\draw[color=black] ... to ;
你确定要在你的代码中使用该语句吗legend image code
?你可以将其替换为
/pgfplots/pplots legend/.style={%
/pgfplots/legend image code/.code={%
\draw[mark repeat=2,mark phase=2,black,sharp plot]
plot coordinates {
(0cm,0cm)
(0.3cm,0cm)
(0.6cm,0cm)%
};%
}%
},
(顺便说一下,这是默认的线条图例)