PGFplots-legend:将文本条目与下方的第一个相应条目左对齐

PGFplots-legend:将文本条目与下方的第一个相应条目左对齐

后续行动我之前的问题,我想将两个文本条目分别与它们下方的第一个文本条目左对齐。换句话说,我需要移动text到与 左对齐,yy=x^2another text与 左对齐zzyyz=x^3

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{mathtools,calc}
\newcommand{\LHS}[2][1.5em]{\hspace{#1}\mathllap{#2}}
\newcommand{\RHS}[2][1.5em]{\mathrlap{#2}\hspace{#1}} 


\begin{document}


    \begin{tikzpicture}
    \begin{axis}[
    legend cell align=left,
    legend columns=2,
    legend style={
        anchor=south,
        at={([yshift=2mm]current axis.north)},%,above=0cm,left=0mm,
        cells={align=center},
        /tikz/every even column/.append style={column sep=5mm}
}
    ]
    \addplot[red] {x};
    \addplot[blue,domain=0:2] {x^2};
    \addplot[orange] {-x};
    \addplot[green] {x^3};
    \addplot[green] {x^3};
    \addplot[green] {x^3};
    \legend{
        text,
        another text,
        $\LHS{yy}=x^2$,
        $\LHS[3em]{zzyyz}=\RHS{x^3}$ reference,
        $\LHS{k}=xyz$,
        $\LHS[3em]{kk}=\RHS{xz}$ cite,
    }
    \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

在某种程度上,你正在手动调整方程式,以使等号对齐。然后你可以问 TiZ(或 calc 包,不是使用 java.util.concurrent.library 库来计算所需的水平空间。

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{mathtools,calc}
\newcommand{\LHS}[2][1.5em]{\hspace{#1}\mathllap{#2}}
\newcommand{\RHS}[2][1.5em]{\mathrlap{#2}\hspace{#1}} 


\begin{document}


    \begin{tikzpicture}
    \begin{axis}[
    legend cell align=left,
    legend columns=2,
    legend style={
        anchor=south,
        at={([yshift=2mm]current axis.north)},%,above=0cm,left=0mm,
        cells={align=center},
        /tikz/every even column/.append style={column sep=5mm}
}
    ]
    \addplot[red] {x};
    \addplot[blue,domain=0:2] {x^2};
    \addplot[orange] {-x};
    \addplot[green] {x^3};
    \addplot[green] {x^3};
    \addplot[green] {x^3};
    \legend{\pgfmathsetmacro{\myw}{1.5em-width("$yy$")}%
        \hspace{\myw pt}text,\pgfmathsetmacro{\myw}{3em-width("$zzyyz$")}%
        \hspace{\myw pt}another text,
        $\LHS{yy}=x^2$,
        $\LHS[3em]{zzyyz}=\RHS{x^3}$ reference,
        $\LHS{k}=xyz$,
        $\LHS[3em]{kk}=\RHS{xz}$ cite,
    }
    \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

更吸引人的输出可能是通过修复\myindent以下 MWE 中的缩进,然后相应地移动内容来实现的。即使您不添加文本,这也可能是更好的选择,因为这样缩进将是通用的。

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{mathtools,calc}
\newcommand{\LHS}[2][1.5em]{\hspace{#1}\mathllap{#2}}
\newcommand{\RHS}[2][1.5em]{\mathrlap{#2}\hspace{#1}} 
\newlength\myindent
\myindent=0.5em

\begin{document}


    \begin{tikzpicture}
    \begin{axis}[
    legend cell align=left,
    legend columns=2,
    legend style={
        anchor=south,
        at={([yshift=2mm]current axis.north)},%,above=0cm,left=0mm,
        cells={align=center},
        /tikz/every even column/.append style={column sep=5mm}
}
    ]
    \addplot[red] {x};
    \addplot[blue,domain=0:2] {x^2};
    \addplot[orange] {-x};
    \addplot[green] {x^3};
    \addplot[green] {x^3};
    \addplot[green] {x^3};
    \legend{\hspace{\myindent}text,
        \hspace{\myindent}another text,\pgfmathsetmacro{\mywleft}{\myindent+width("$yy$")}%
        $\LHS[\mywleft pt]{yy}=x^2$,\pgfmathsetmacro{\mywright}{\myindent+width("$zzyyz$")}%
        $\LHS[\mywright pt]{zzyyz}=\RHS{x^3}$ reference,\pgfmathsetmacro{\mywleft}{\myindent+width("$yy$")}%
        $\LHS[\mywleft pt]{k}=xyz$,\pgfmathsetmacro{\mywright}{\myindent+width("$zzyyz$")}%
        $\LHS[\mywright pt]{kk}=\RHS{xz}$ cite,
    }
    \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容