鉴于这些限制,我可以向图例中添加信息吗?

鉴于这些限制,我可以向图例中添加信息吗?

我有以下情节:

\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,但我遇到了以下问题:

  1. 我只能在keys和中添加文本/命令axisaddplot即只能在\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}

相关内容