
次の LaTeX コードを実行する必要があります:
\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}
結果は次のとおりです。
データ ファイルは次のようになります。
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
黄色の部分は問題ないように見えますが、緑の部分は奇妙なオフセットになっています。どうすれば解決できますか?
答え1
ここではヒストグラムを使用しないでください。黄色のデータの 1 つの値が対応する緑の値よりも低くなると、プロットのアイデアはもはや実用的ではありません。実際のバーまたは実際のスタッキングを使用する必要があり、混合は使用しないでください。(実際には、単純な曲線が最適です)
それでも、私はあなたに解決策を提供します:
% 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}