![鉴于这些限制,我可以向图例中添加信息吗?](https://linux22.com/image/457174/%E9%89%B4%E4%BA%8E%E8%BF%99%E4%BA%9B%E9%99%90%E5%88%B6%EF%BC%8C%E6%88%91%E5%8F%AF%E4%BB%A5%E5%90%91%E5%9B%BE%E4%BE%8B%E4%B8%AD%E6%B7%BB%E5%8A%A0%E4%BF%A1%E6%81%AF%E5%90%97%EF%BC%9F.png)
我有以下情节:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend entries={Region,Signal},
]
\addplot[
fill=gray!20, draw=gray!20,
] coordinates {
(0,20)
(100,20)
(100,40)
(0,40)
};
\addplot[] coordinates {
(0,100)
(100,0)
};
\end{axis}
\end{tikzpicture}
\end{document}
看起来像:
我想在图例中添加另一行,例如t_0 = 2022-07-31 20:11:49 UTC
,但我遇到了以下问题:
- 我只能在
keys
和中添加文本/命令axis
,addplot
即只能在\begin{axis}[HERE]
和内\addplot[HERE]
。我无法在其他任何地方添加文本。
我曾尝试在最后添加一个空白的情节,但它没有写出图例。
我知道这些情况非常罕见。我是不是运气不好?或者legend_style, legend_entries
我可以添加什么内容axis
?
附言:我不能使用\addlegendimage
和\addlegendentry
。我只能在上面指定的位置添加文本。
答案1
考虑到您所述的限制,您可能仍然可以执行以下操作(不过,我让您决定这在语义上是否合理):
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend cell align=left,
legend entries={
Region,
Signal,
{$t_0 = {}$2022-07-31 20:11:49 UTC}
},
]
\addplot[
fill=gray!20, draw=gray!20, area legend
] coordinates {
(0,20)
(100,20)
(100,40)
(0,40)
};
\addplot[] coordinates {
(0,100)
(100,0)
};
\addplot[empty legend] coordinates {
% at least one coordinate is needed for the plot to be added
(0,0)
};
\end{axis}
\end{tikzpicture}
\end{document}
另一种方法是将时间戳添加为额外的刻度:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend cell align=left,
legend entries={
Region,
Signal
},
xlabel={$t$},
xlabel style={
at={(ticklabel* cs:1)},
anchor=north west,
},
ylabel={Hz},
ylabel style={
at={(ticklabel* cs:1)},
anchor=south east,
rotate=-90
},
extra x ticks={0},
extra x tick style={
xticklabel={2022-07-31 \\ 20:11:49 UTC},
xticklabel style={
yshift=-1.25em,
align=center
}
}
]
\addplot[
fill=gray!20, draw=gray!20, area legend
] coordinates {
(0,20)
(100,20)
(100,40)
(0,40)
};
\addplot[] coordinates {
(0,100)
(100,0)
};
\end{axis}
\end{tikzpicture}
\end{document}
或者你可以做这样的事情:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend cell align=left,
legend entries={
Region,
Signal
},
xlabel={$t$},
xlabel style={
at={(ticklabel* cs:1)},
anchor=north west,
},
ylabel={Hz},
ylabel style={
at={(ticklabel* cs:1)},
anchor=south east,
rotate=-90
},
extra x ticks={0},
extra x tick style={
xticklabel={2022-07-31 \\ 20:11:49 UTC},
xticklabel style={
align=left,
anchor=south west,
rotate=30
},
ticklabel pos = right
}
]
\addplot[
fill=gray!20, draw=gray!20, area legend
] coordinates {
(0,20)
(100,20)
(100,40)
(0,40)
};
\addplot[] coordinates {
(0,100)
(100,0)
};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
奇怪的请求...信息$t_0 = {}$2022-07-31 20:11:49 UTC
与所服务的内容没有任何共同之处legend
。正如我在评论中提到的,在我看来,它更属于图表标题或图表说明。
图表标题通常位于图表上方,但我知道这不是理想的选择,这些信息应该位于图表内部。例如:
我认为将这些信息插入到图例中,除了效果不好之外,还会使其信息变得不清晰。但这取决于你。
\documentclass[margin=3mm]{standalone}
\usepackage{pgfplots}\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title={$t_0 = {}$2022-07-31 20:11:49 UTC},
title style = {at = {(0.95,0.95)}, font=\small, inner xsep=0pt, anchor=north east},
legend style = {at = {(0.95,0.9)}, font=\footnotesize, anchor=north east},
legend cell align=left,
legend entries={Region, Signal}
]
\addplot[fill=gray!20, draw=gray!20, area legend]
coordinates {(0,20) (100,20)
(100,40) (0,40)};
\addplot[] coordinates {(0,100) (100,0)};
\end{axis}
\end{tikzpicture}
\end{document}