在同一张图表中创建多个水平条形图

在同一张图表中创建多个水平条形图

我正在尝试创建一个大致如下的图表

除了使用几个水平条形图外,我还没有找到其他方法。条形图的“高度”只与相邻条形图比较时才有意义。理想情况下,应该有 3-6 个条形图,并可以绘制标准误差或标准偏差。

原始数据

这是要绘制的数据,以百分比计算绘制,比较节点的多个单元。因此,一根杆可以有 1 个统一的长度(例如 1-2 厘米),然后每根杆的长度将是最大长度的 x%,具体取决于提供的值。

这些发生在 3 节点或 6 节点块中,但一个解决方案可能适用于另一个。标准偏差对每个条形图都很有用,固定在条形图头部的中心(像这样但向右旋转了 90°)

tikz可以用或 来完成吗pgfplots

答案1

出于安全原因,我不会关注外部链接。因此,我只是从 pgfmanual 中复制了一个xbar图示例,但您会发现添加自己的数据很简单。当然,我使用groupplots,正如我在评论中所建议的那样。

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{patterns,positioning}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
  \begin{groupplot}[group style={group size=3 by 1},xmin=0,ymin=0,height=4cm,
  width=5cm,no markers, xbar,hide axis%,xtick=\empty,ytick=\empty
  ]
    \nextgroupplot
         \addplot [draw=black,
        pattern=horizontal lines dark blue,
    ] coordinates {
        (3,5) (5,10) (15,15) (20,20) (35,25)
    };
    \nextgroupplot
         \addplot [draw=black,
        pattern=horizontal lines dark blue,
    ] coordinates {
        (3,5) (5,10) (15,15) (20,20) (35,25)
    };
    \nextgroupplot
         \addplot [draw=black,
        pattern=horizontal lines dark blue,
    ] coordinates {
        (3,5) (5,10) (15,15) (20,20) (35,25)
    };
    \end{groupplot}
    \draw[-latex] ([xshift=-2mm]group c1r1.south west) -- 
     ([xshift=-2mm]group c1r1.north west) 
     node[midway,sloped,above,font=\sffamily] {values};
    \draw[-latex] ([xshift=-2mm]group c1r1.south west) -- (group c3r1.south east)
    node[below,right,font=\sffamily] {nodes};
    \foreach \X in {1,2,3}
    {\node[below=4pt of group c\X r1.south] {\X};}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容