
ツリーの要素を凡例に追加したいのですが(説明については凡例を参照してください)。これそしてこれ回答はありますが、凡例に他の図形を追加する方法は説明されていません。pgfplots-docs には役立つ情報は何も見つかりませんでした。凡例には pgfplots に限定されているわけではないので、別の解決策があれば喜んで使用します。
\documentclass{standalone}
\usepackage[dvipsnames,fixpdftex]{xcolor}
\usepackage{forest}
\usetikzlibrary{calc,shadings}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
% Code from Christian Feuersänger
% https://tex.stackexchange.com/questions/54794/using-a-pgfplots-style-legend-in-a-plain-old-tikzpicture#54834
% argument #1: any options
\newenvironment{customlegend}[1][]{%
\begingroup
% inits/clears the lists (which might be populated from previous
% axes):
\csname pgfplots@init@cleared@structures\endcsname
\pgfplotsset{#1}%
}{%
% draws the legend:
\csname pgfplots@createlegend\endcsname
\endgroup
}%
% makes \addlegendimage available (typically only available within an
% axis environment):
\def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}
%%--------------------------------
% definition to insert numbers
\pgfkeys{/pgfplots/number in legend/.style={%
/pgfplots/legend image code/.code={%
\node at (0.295,-0.0225){#1};
},%
},
}
\begin{document}
\begin{forest}
for tree={circle,draw,minimum size = 2.25em, l sep=15pt, s sep=3.0em}
[0, fill=Apricot
[1, fill=SpringGreen, shape=diamond, for tree={s sep = 3.0em}
[$\dots$, draw=none]
]
[2, fill=SpringGreen, shape=star, for tree={s sep = 3.0em}
[$\dots$, draw=none]
[8]
]
[3, fill=SpringGreen, shape=diamond
[$\dots$, draw=none]
]
[4, fill=Apricot
[$\dots$, draw=none]
]
[5, fill=SpringGreen, shape=regular polygon
[$\dots$, draw=none]
]
]
\begin{customlegend}[
legend entries={ % <= in the following there are the entries
Green circle/node here,
Red circle/node here,
White Star here,
White Diamond here,
White Polygon here
},
legend style={at={(4.5,3.5)},font=\footnotesize}] % <= to define position and font legend
% the following are the "images" and numbers in the legend
\addlegendimage{mark=ball,ball color=SpringGreen, draw=white}
\addlegendimage{mark=ball,ball color=Apricot, draw=white}
\addlegendimage{stealth-stealth,red,opacity=0.4}
\addlegendimage{number in legend=1,blue}
\addlegendimage{number in legend=0,red}
\end{customlegend}
\end{forest}
\end{document}
答え1
凡例の図形に、現在のスタイルに似たスタイルを追加できます。number in legend
たとえば、 というスタイルです。shape in legend
図形のスタイルは、 を使って、形状と色の 2 つの引数を受け入れるように定義できます.style 2 args
。これは で呼び出されますshape in legend={arg1}{arg2}
( を参照) 。pgfplots を使用して複数のフィルターからデータをプロットする方法)。スタイル自体は、形状と塗りつぶしの色を引数として使用する通常のノードを描画します。
MWE:
\documentclass{standalone}
\usepackage[dvipsnames]{xcolor}
\usepackage{forest}
\usetikzlibrary{calc,shadings}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
% Code from Christian Feuersänger
% https://tex.stackexchange.com/questions/54794/using-a-pgfplots-style-legend-in-a-plain-old-tikzpicture#54834
% argument #1: any options
\newenvironment{customlegend}[1][]{%
\begingroup
% inits/clears the lists (which might be populated from previous
% axes):
\csname pgfplots@init@cleared@structures\endcsname
\pgfplotsset{#1}%
}{%
% draws the legend:
\csname pgfplots@createlegend\endcsname
\endgroup
}%
% makes \addlegendimage available (typically only available within an
% axis environment):
\def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}
%%--------------------------------
% definition to insert numbers and shapes
\pgfkeys{/pgfplots/number in legend/.style={%
/pgfplots/legend image code/.code={%
\node at (0.295,-0.0225){#1};
},%
},
/pgfplots/shape in legend/.style 2 args={%
/pgfplots/legend image code/.code={%
\node[draw,#1,fill=#2,minimum width=3mm] at (0.295,-0.0225){};
},%
},
}
\begin{document}
\begin{forest}
for tree={circle,draw,minimum size = 2.25em, l sep=15pt, s sep=3.0em}
[0, fill=Apricot
[1, fill=SpringGreen, shape=diamond, for tree={s sep = 3.0em}
[$\dots$, draw=none]
]
[2, fill=SpringGreen, shape=star, for tree={s sep = 3.0em}
[$\dots$, draw=none]
[8]
]
[3, fill=SpringGreen, shape=diamond
[$\dots$, draw=none]
]
[4, fill=Apricot
[$\dots$, draw=none]
]
[5, fill=SpringGreen, shape=regular polygon
[$\dots$, draw=none]
]
]
\begin{customlegend}[
legend entries={ % <= in the following there are the entries
Green circle/node here,
Red circle/node here,
White Star here,
White Diamond here,
White Polygon here
},
legend style={at={(4.5,3.5)},font=\footnotesize}] % <= to define position and font legend
% the following are the "images" and numbers in the legend
\addlegendimage{shape in legend={circle}{SpringGreen}}
\addlegendimage{shape in legend={circle}{red}}
\addlegendimage{shape in legend={star}{white}}
\addlegendimage{shape in legend={diamond}{white}}
\addlegendimage{shape in legend={regular polygon}{white}}
\end{customlegend}
\end{forest}
\end{document}
結果: