
Quiero usar un diagrama de barras para comparar algunos datos. Cuando escribí mi código, los resultados no fueron los que quería. Quiero que cada conjunto de barras esté claramente separado. El segundo punto que quiero es que los números se muestren a medida que escribí, pero en la salida int los números se redondearon. ¿Cómo puedo solucionar estos problemas?
Aquí está mi 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}
Muchas gracias.
Respuesta1
Tiene más datos de los que cabe cómodamente en un gráfico de ese tamaño. Para que las cosas se ajusten, puede ampliar la trama y también agregar los desplazamientos respectivos. Si aumenta la precisión, no se produce el redondeo. Para evitar que los nodos se superpongan tanto, los roté.
\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}
Respuesta2
una alternativa con uso de pgfplotstable
(para hacer ejercicio...)
\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}