pgfplots:在同一个图中绘制多个 xbar

pgfplots:在同一个图中绘制多个 xbar

我正在尝试将两个条形图放在一起,就像下面一样,但是使用 xbar。

在此处输入图片描述

然而,事实证明这对我来说比要求的要难。这是我的代码:

\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=0.8\linewidth,compat=1.17}

\begin{document}
    
    \begin{tikzpicture}% table
        \begin{axis}[
            xbar,
            bar width=0.7,
            xlabel=Quantidade de vendedores/consumidores,
            ylabel=Estado,
            ytick=data,
            yticklabels from table={data/num_sellers_per_state.dat}{State},
            enlargelimits=0.05,
            legend pos=south east,
        ]
            
            % Customer data
            \addplot table[
                y expr=\coordindex,
                x=CustomerSize,
            ] {data/num_sellers_per_state.dat};
            
            % Seller data
            \addplot table[
                y expr=\coordindex,
                x=SellerSize,
            ] {data/num_sellers_per_state.dat};
            
            \legend{Consumidores,Vendedores}
        \end{axis}
    \end{tikzpicture}
    
\end{document}

以下是文件内容data/num_sellers_per_state.dat

State   CustomerSize    SellerSize
RR  46  0
AP  68  0
AC  81  1
AM  148 1
RO  253 2
TO  280 0
SE  350 2
AL  413 0
RN  485 5
PI  495 1
PB  536 6
MS  715 5
MA  747 1
MT  907 4
PA  975 1
CE  1336    13
PE  1652    9
GO  2020    40
ES  2033    23
DF  2140    30
BA  3380    19
SC  3637    190
PR  5045    349
RS  5466    129
MG  11635   244
RJ  12852   171
SP  41746   1849

我最终收到的是一个条形图,其中的条形图一个接一个地叠加在一起,如下所示。

在此处输入图片描述

我尝试了设置bar widthbar shift属性,但都不起作用。我查找了与此相关的多个问题,但它们似乎都仅适用于 ybars。

编辑:修正错别字。

答案1

欢迎使用 TeX.SX!实际上,您只需要增加绘图的高度或减少条形的宽度(或者更好的是,两者兼而有之):

\documentclass[border=1mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{filecontents}{num_sellers_per_state.dat}
State   CustomerSize    SellerSize
RR  46  0
AP  68  0
AC  81  1
AM  148 1
RO  253 2
TO  280 0
SE  350 2
AL  413 0
RN  485 5
PI  495 1
PB  536 6
MS  715 5
MA  747 1
MT  907 4
PA  975 1
CE  1336    13
PE  1652    9
GO  2020    40
ES  2033    23
DF  2140    30
BA  3380    19
SC  3637    190
PR  5045    349
RS  5466    129
MG  11635   244
RJ  12852   171
SP  41746   1849
\end{filecontents}
    
\begin{document}

\begin{tikzpicture}% table
    \begin{axis}[
        height=15cm,
        xbar,
        bar width=.15cm,
        xlabel=Quantidade de vendedores/consumidores,
        ylabel=Estado,
        ytick=data,
        yticklabels from table={num_sellers_per_state.dat}{State},
        enlargelimits=0.05,
        legend pos=south east,
    ]
        
        % Customer data
        \addplot table[
            y expr=\coordindex,
            x=CustomerSize,
        ] {num_sellers_per_state.dat};
        
        % Seller data
        \addplot table[
            y expr=\coordindex,
            x=SellerSize,
        ] {num_sellers_per_state.dat};
        
        \legend{Consumidores,Vendedores}
    \end{axis}
\end{tikzpicture}
    
\end{document}

(注意,我更改了代码中文件的路径,以使其能够与filecontents。)

在此处输入图片描述

相关内容