如何将图例文字放在 pgfplot 的左侧?

如何将图例文字放在 pgfplot 的左侧?

在 pgfplot 的图例中,文本位于图像的右侧。是否可以将单个条目的文本移到图像的左侧?

例如,以下 LaTeX 代码将生成如下图例:

[░░] 不好 [▒▒] [██] 好

相反,我想将“Bad”移到图例图像的左侧,然后得到

不好 [░░] [▒▒] [██] 好

有没有办法用 pgfplots 来实现这一点?

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots, pgfplotstable}

\pgfplotsset{compat=1.17}

\begin{document}

\pgfplotstableread[col sep=&]{
Q & A & B & C
Q1 & 0 & 1 & 3
Q2 & 2 & 1 & 1
}{\answers}

\begin{tikzpicture}
\begin{axis}[
    legend columns=-1,
    legend to name=leg1,
    xbar stacked,
    y=0.8cm, y dir=reverse, xmin=0, xmax=4,
    ytick=data, yticklabels from table={\answers}{Q},
]

    \addplot [fill=red] table [x=A, y expr=\coordindex] {\answers};
    \addplot [fill=yellow] table [x=B, y expr=\coordindex] {\answers};
    \addplot [fill=green] table [x=C, y expr=\coordindex] {\answers};
    
    \legend{Bad, { },Good}

\end{axis}
\end{tikzpicture}

\ref{leg1}

\end{document}

答案1

一种方法是添加一个额外的图例条目,其中包含单词坏的作为图像和空描述,然后红色和黄色图作为没有描述的正常图例条目,然后绿色图带有单词好的如描述。

这会在第一个图例条目(单词坏的) 和第二个条目(红色矩形),因此您可以使用一些负字距调整来调整它。

在图例中添加文本“图像”的代码取自在 pgfplot 中的图例中添加自定义条目

梅威瑟:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots, pgfplotstable}

\pgfplotsset{compat=1.16}
\pgfplotsset{
    legend image with text/.style={
        legend image code/.code={%
            \node[anchor=center] at (0.3cm,0cm) {#1};
        }
    },
}
\begin{document}

\pgfplotstableread[col sep=&]{
Q & A & B & C
Q1 & 0 & 1 & 3
Q2 & 2 & 1 & 1
}{\answers}

\begin{tikzpicture}
\begin{axis}[
    legend columns=-1,
    legend to name=leg1,
    xbar stacked,
    y=0.8cm, y dir=reverse, xmin=0, xmax=4,
    ytick=data, yticklabels from table={\answers}{Q},
]
    \addlegendimage{legend image with text=Bad\kern-3pt}
    \addlegendentry{{}}
    \addplot [fill=red] table [x=A, y expr=\coordindex] {\answers};
    \addlegendentry{{}}
    \addplot [fill=yellow] table [x=B, y expr=\coordindex] {\answers};
    \addlegendentry{{}}
    \addplot [fill=green] table [x=C, y expr=\coordindex] {\answers};
    \addlegendentry{Good}
    
    %\legend{Bad, { },Good}

\end{axis}
\end{tikzpicture}

\ref{leg1}

\end{document}

结果:

在此处输入图片描述

相关内容