在 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}
结果: