请看下面的例子。您会发现,如果%%%% TO BE COMMENTED %%%%
注释了该行,则图例中的蓝色星形就没问题。
但是,否则它会向右移动,如屏幕截图所示:这是一个错误吗?
另外,为什么图例中的星形比图中的略小?红色圆盘似乎不是这种情况。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{shapes.geometric}
\pgfplotsset{legend cell align={left}} %%%% TO BE COMMENTED %%%%
\pgfdeclareplotmark{mystar}{
\node[star,star points=5,star point ratio=0.5,draw=blue,solid,fill=blue,scale=0.75] {};
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-1, xmax=1,
ymin=0, ymax=1,
legend entries={SO,TO},
]
\addlegendimage{semithick, red, mark=*}
\addlegendimage{semithick, blue, dashed, mark=mystar}
\addplot [semithick, red, mark=*, forget plot]
table {%
-1 0
1 1
};
\addplot [blue, semithick, dashed, mark=mystar, forget plot]
table {%
-1 1
1 0
};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
我不明白为什么您要绕过 PGFPlots 使用forget plot
和创建图例条目的方式\addlegendimage
,所以我纠正了这一点。您正在绘制一个空节点以用作图标记,因此以正确的方式设置锚点和大小很重要。我添加了“更多字母”来显示该legend cell align={left}
选项的作用。
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{shapes.geometric}
\pgfplotsset{legend cell align={left}} %%%% TO BE COMMENTED %%%%
\pgfdeclareplotmark{mystar}{
\node[star, star points=5, star point ratio=0.5, draw=blue, solid, fill=blue, minimum width=3pt, inner sep=0pt, outer sep=0pt, anchor=center] {};
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-1, xmax=1,
ymin=0, ymax=1,
]
\addplot [red, semithick, mark=*]
table{
-1 0
1 1
};
\addlegendentry{SO};
\addplot [blue, semithick, dashed, mark=mystar]
table{
-1 1
1 0
};
\addlegendentry{TO some more letters}
\end{axis}
\end{tikzpicture}
\end{document}