仅填充 pgfplots 条形图的图例条目更加明显

仅填充 pgfplots 条形图的图例条目更加明显

如何在文本图例条目旁边获得更明显的图例图像A, B, C?仅填充条形图的默认设置似乎仅由一条细细的垂直线组成,这使得辨别多种颜色变得相当困难:

带有窄图例条目图像的 pgfplots 条形图

我认为我的答案与更改图例图像代码密切相关,如下所示这个答案,但我无法让(重命名ybarxbar/pgfplots/xbar legend/.style段影响我的输出。

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}

\begin{axis}[
  xbar stacked,
  legend pos=south east,
  y post scale=.5]

\addplot[fill,blue!50] coordinates {(1,0) (2,1) (2,2) (3,3)};
\addplot[fill,red!50] coordinates {(1,0) (2,1) (2,2) (3,3)};
\addplot[fill,brown!50] coordinates {(1,0) (2,1) (2,2) (3,3)};

\legend{A,B,C} % why so narrow, my dear legend images?
\end{axis}

\end{tikzpicture}
\end{document}

两个更新

  1. 添加xbar legend=fill选项axis即可填充图例图像。
  2. 差不多了:legend image post style={yscale=2,yshift=-.75ex}来自这个答案使填充区域几乎呈正方形,这样我就可以适当调整垂直位置。

缺少什么:如何去掉垂直线?

答案1

如果图例图像应该是正方形,那么你自己的图例样式可以是

\pgfplotsset{
  /pgfplots/my xbar legend/.style={
    /pgfplots/legend image code/.code={%
      \draw[##1,/tikz/.cd,bar width=.5em]
      plot coordinates { (\pgfplotbarwidth,0.1em)};}
}}

并用作my xbar legend选项axis

\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{
  /pgfplots/my xbar legend/.style={
    /pgfplots/legend image code/.code={%
      \draw[##1,/tikz/.cd,bar width=.5em]
      plot coordinates { (\pgfplotbarwidth,0.1em)};}
}}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  xbar stacked,
  legend pos=south east,
  y post scale=.5,
  my xbar legend
  ]
\addplot[fill,blue!50] coordinates {(1,0) (2,1) (2,2) (3,3)};
\addplot[fill,red!50] coordinates {(1,0) (2,1) (2,2) (3,3)};
\addplot[fill,brown!50] coordinates {(1,0) (2,1) (2,2) (3,3)};
\legend{A,B,C}
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容