PGFplots:图例中星号标记的意外行为

PGFplots:图例中星号标记的意外行为

请看下面的例子。您会发现,如果%%%% 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}

包含两条线图和标记的图表

相关内容