2 Histogramme mit gemeinsamer x-Achse sind nicht ausgerichtet

2 Histogramme mit gemeinsamer x-Achse sind nicht ausgerichtet

Ich habe folgenden Latex-Code:

\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}

Dies ist das Ergebnis: Ergebnis

Die Datendatei sieht folgendermaßen aus:

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

Der gelbe Bereich sieht gut aus, aber der grüne hat einen merkwürdigen Versatz. Wie kann ich das beheben?

Antwort1

Sie sollten hier kein Histogramm verwenden. Wenn ein Wert der gelben Daten niedriger wird als der entsprechende grüne Wert, ist Ihre Idee des Diagramms nicht mehr praktikabel. Sie sollten echte Balken oder echte Stapel verwenden, keine Mischung. (In Wirklichkeit wären einfache Kurven am besten)

Dennoch biete ich Ihnen eine Lösung an:

% 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}

Bildbeschreibung hier eingeben

verwandte Informationen