
Quero usar um gráfico de barras para comparar alguns dados. Quando digitei meu código, os resultados não foram os que eu queria. Quero que cada conjunto de barras seja separado claramente. O segundo ponto que quero é que os números sejam mostrados conforme eu digito, mas na saída os números foram arredondados. Como posso resolver esses problemas?
Aqui está meu código
\documentclass{standalone}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=.5cm,
x tick label style={rotate=90},
enlarge x limits=0.2,
legend style={at={(0.5,-0.15)},
anchor=north,legend columns=-1},
bar width = 0.2 cm,
symbolic x coords= {4g,6g,8g,10g,2gamma,3gamma,4gamma,5gamma,6gamma,7gamma,0beta},
xtick=data,
xticklabels={$ 4_g $, $ 6_g $, $ 8_g $, $ 10_g $, $ 2_\gamma $, $ 3_\gamma $, $ 4_\gamma $, $ 5_\gamma $, $ 6_\gamma $, $ 7_\gamma $, $ 0_\beta $},
nodes near coords,
nodes near coords align={vertical},
]
\addplot coordinates {(4g, 2.337) (6g, 3.949) (8g, 5.815) (10g, 7.924) (2gamma, 1.830) (3gamma, 2.581) (4gamma, 4.379) (5gamma, 4.590) (6gamma, 6.983) (7gamma, 6.792) (0beta, 3.790)};
\addplot coordinates {(4g, 2.479) (6g, 4.314) (8g, 6.377) (10g, 8.624) (2gamma, 1.935) (3gamma, 2.91) (4gamma, 3.795) (5gamma, 4.682) (6gamma, 5.905) (7gamma, 6.677) (0beta, 3.776)};
\addplot coordinates {(4g, 2.350) (6g, 3.984) (8g, 5.877 ) (10g, 8.019) (2gamma, 1.837) (3gamma, 2.597) (4gamma, 4.420) (5gamma, 4.634) (6gamma, 7.063) (7gamma, 6.869) (0beta, 3.913)};
\legend{used,understood,not understood}
\end{axis}
\end{tikzpicture}
\end{document}
Muito obrigado.
Responder1
Você tem mais dados do que um gráfico desse tamanho pode caber confortavelmente. Para encaixar as coisas, você pode ampliar o gráfico e também adicionar os respectivos deslocamentos. Se aumentar a precisão, o arredondamento não ocorre. Para evitar que os nós se sobreponham tanto, eu os girei.
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16,width=12cm}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=.8cm,
x tick label style={rotate=90},
%enlarge x limits=0.2,
legend style={at={(0.5,-0.15)},
anchor=north,legend columns=-1},
bar width = 0.2 cm,
symbolic x coords= {4g,6g,8g,10g,2gamma,3gamma,4gamma,5gamma,6gamma,7gamma,0beta},
xtick=data,
xticklabels={$ 4_g $, $ 6_g $, $ 8_g $, $ 10_g $, $ 2_\gamma $, $ 3_\gamma $, $ 4_\gamma $, $ 5_\gamma $, $ 6_\gamma $, $ 7_\gamma $, $ 0_\beta $},
nodes near coords={\pgfmathprintnumber[precision=3]{\pgfplotspointmeta}},
nodes near coords align={vertical},
nodes near coords style={rotate=90,anchor=west}
]
\addplot+[bar shift = -0.25cm] coordinates {(4g, 2.337) (6g, 3.949) (8g, 5.815) (10g, 7.924) (2gamma, 1.830) (3gamma, 2.581) (4gamma, 4.379) (5gamma, 4.590) (6gamma, 6.983) (7gamma, 6.792) (0beta, 3.790)};
\addplot+[bar shift = -0cm] coordinates {(4g, 2.479) (6g, 4.314) (8g, 6.377) (10g, 8.624) (2gamma, 1.935) (3gamma, 2.91) (4gamma, 3.795) (5gamma, 4.682) (6gamma, 5.905) (7gamma, 6.677) (0beta, 3.776)};
\addplot+[bar shift = 0.25cm] coordinates {(4g, 2.350) (6g, 3.984) (8g, 5.877 ) (10g, 8.019) (2gamma, 1.837) (3gamma, 2.597) (4gamma, 4.420) (5gamma, 4.634) (6gamma, 7.063) (7gamma, 6.869) (0beta, 3.913)};
\legend{used,understood,not understood}
\end{axis}
\end{tikzpicture}
\end{document}
Responder2
uma alternativa com uso de pgfplotstable
(para exercício...)
\documentclass[margin=3mm]{standalone}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\pgfplotstableread{% table with diagram's data
X Y1 Y2 Y3
$4_g$ 2.337 2.479 2.350
$6_g$ 3.949 4.314 3.984
$8_g$ 5.815 6.377 5.877
$10_g$ 7.924 8.624 8.019
$2_\gamma$ 1.830 1.935 1.837
$3_\gamma$ 2.581 2.91 2.597
$4_\gamma$ 4.379 3.795 4.420
$5_\gamma$ 4.590 4.682 4.634
$6_\gamma$ 6.983 5.905 7.063
$7_\gamma$ 6.792 6.677 6.869
$0_\beta$ 3.790 3.776 3.913
}\mydata
\begin{axis}[width=99mm,
ylabel=Population,
legend style={legend columns=-1,
font=\footnotesize,
/tikz/every even column/.append style={column sep=2mm},
anchor=north,
at={(0.5,-0.1)},
},
ybar=0.5mm, % distance between bars (shift bar)
bar width=2mm, % width of bars
nodes near coords={\pgfmathprintnumber[precision=3]{\pgfplotspointmeta}},
nodes near coords style={font=\scriptsize, rotate=90, anchor=west},
nodes near coords align={vertical},
ymin=0, ymax=10,
ytick={0,...,10},
%
xtick=data,
xticklabels from table = {\mydata}{X},
scale only axis,
]
\addplot table[x expr=\coordindex,y index=1] {\mydata};
\addplot table[x expr=\coordindex,y index=2] {\mydata};
\addplot table[x expr=\coordindex,y index=3] {\mydata};
\legend{used,understood,not understood}
\end{axis}
\end{tikzpicture}
\end{document}