groupplot 中的图例自定义

groupplot 中的图例自定义

我有一个图表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} 

在此处输入图片描述

相关内容