
Мне нужно сделать следующий код 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
Здесь не следует использовать гистограмму. Если одно значение желтых данных становится ниже соответствующего зеленого значения, ваша идея графика больше непрактична. Вам следует использовать реальные столбцы или реальное стекирование, а не смесь. (в реальности лучше всего подойдут простые кривые)
Тем не менее, я предлагаю вам решение:
% 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}