我有一个图表groupplot
,其中每个图只显示部分数据——第一个显示五个数据集中的一个,而第二个显示其余四个。但是,出于空间和美观的原因,我想在第一个图中显示所有数据的图例。
我想一个解决方案是,我可以在第一个图中用白色绘制四个“缺失”数据集以隐藏它们,但这会隐藏我想要显示的部分数据集。为了防止这种情况,我需要更改数据集的顺序,这是我想要的。
目前我能看到的唯一解决方案是使用 TikZ 命令手动绘制图例,但这看起来很尴尬。
下面是说明我的问题的 MWE:
\documentclass[10pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[xmin=-1,xmax=1,ymin=-1,ymax=1,width=5cm,height=5cm,
group style={group size=1 by 2}]
\nextgroupplot
\addplot[color=black] coordinates {(-0.9,0.9) (0.9,-0.9)};
\addplot[color=red] coordinates {(-0.9,-0.9) (0.9,0.9)};
\legend{a,b};
\nextgroupplot
\addplot[color=black] coordinates {(-0.9,0.9) (0.9,-0.9)};
\addplot[color=red] coordinates {(-0.9,-0.9) (0.9,0.9)};
\end{groupplot}
\end{tikzpicture}
\end{document}
这给出
其中有我想要的图例,但在第一个图中,我不希望出现红线(不影响图例)。
答案1
\addlegendimage{red}
而不是\addplot
第一个中的groupplot
。可选择为每个数据集定义样式。
\documentclass[10pt]{standalone}
\usepackage{pgfplots} % loads tikz
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}[
plot1/.style={black},
plot2/.style={red}
]
\begin{groupplot}[xmin=-1,xmax=1,ymin=-1,ymax=1,width=5cm,height=5cm,
group style={group size=1 by 2}]
\nextgroupplot
\addplot[plot1] coordinates {(-0.9,0.9) (0.9,-0.9)};
\addlegendimage{plot2}
\legend{a,b};
\nextgroupplot
\addplot[plot1] coordinates {(-0.9,0.9) (0.9,-0.9)};
\addplot[plot2] coordinates {(-0.9,-0.9) (0.9,0.9)};
\end{groupplot}
\end{tikzpicture}
\end{document}