2 histogramas com eixo x comum não estão alinhados

2 histogramas com eixo x comum não estão alinhados

Eu tenho que seguir o código do látex:

\usepackage{tikz}
\usepackage{pgfopts}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}[scale=1]
\begin{axis}[minor tick num=1,
            scale only axis,
            height=5cm,
            width=\textwidth*0.8,
            xlabel=\textnumero contestants,
            ylabel style={overlay},
                yticklabel style={overlay},
            xticklabel style={overlay},
            ylabel=,
            ybar,
            ymin=0,
            legend style={at={(0, 1)},anchor=west},
            legend entries={\textnumero matches, \textnumero rounds}]
\addplot [draw opacity=0,fill=yellow!50] table [x index=0, y index=1] {charts/merge_no_matches_rounds.csv};
\addplot [draw opacity=0,fill=green] table [x index=0, y index=2] {charts/merge_no_matches_rounds.csv};
\end{axis}
\end{tikzpicture}
\end{document}

Este é o resultado: Resultado

O arquivo de dados fica assim:

2   1   1
4   4   3
6   9   6
8   11  6
10  17  9
12  21  9
14  23  9
. . .
92  181 18
94  185 18
96  189 18
98  191 18
100 193 18

A área amarela parece boa, mas a verde tem um deslocamento estranho. Como posso resolver isto?

Responder1

Você não deve usar um histograma aqui. Se um valor dos dados amarelos for inferior ao valor verde correspondente, sua ideia de gráfico não será mais prática. Você deve usar barras reais ou empilhamento real, não uma mistura. (na realidade, curvas simples seriam as melhores)

Ainda assim, forneço uma solução para você:

% arara: pdflatex

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\usepgfplotslibrary{fillbetween}
\usepackage{textcomp}
\usepackage{filecontents}
\begin{filecontents*}{charts/merge_no_matches_rounds.csv}
    2   1   1
    4   4   3
    6   9   6
    8   11  6
    10  17  9
    12  21  9
    14  23  9
    92  181 18
    94  185 18
    96  189 18
    98  191 18
    100 193 18
\end{filecontents*}
\begin{document}
    \begin{figure}
        \centering
    \begin{tikzpicture}
    \begin{axis}[%
    ,minor tick num=1
    ,scale only axis
    ,height=5cm
    ,width=\textwidth*0.8
    ,xlabel=\textnumero{} contestants
    ,yticklabel style={overlay}
    ,xticklabel style={overlay}
    ,ymin=0
    ,legend cell align=left
    ,legend style={at={(0, 1)},anchor=west}]
    \addplot [draw opacity=0,name path=f,area legend,fill=yellow!50] table [x index=0, y index=1] {charts/merge_no_matches_rounds.csv};
    \addplot [draw opacity=0,name path=g,area legend,fill=green] table [x index=0, y index=2] {charts/merge_no_matches_rounds.csv};
    \path[name path=axis] (axis cs:0,0.2) -- (axis cs:100,0.2);
    \addplot [draw opacity=0,color=yellow!50,fill=yellow!50]
    fill between[of=f and axis];
    \addlegendentry{\textnumero{} matches}
    \addplot [draw opacity=0,color=green,fill=green]
    fill between[of=g and axis];
    \addlegendentry{\textnumero{} rounds}
    \end{axis}
    \end{tikzpicture}
    \end{figure}    
\end{document}

insira a descrição da imagem aqui

informação relacionada