
Estoy intentando dibujar un histograma de 8 contenedores de ancho 10. Esto es lo que tengo actualmente, donde el ancho de mi contenedor es notablemente mucho menor que 10 unidades.
\begin{tikzpicture}
\begin{axis} [ybar,xmin=70,xmax=160,ymin=0,ymax=20, xlabel = IQ Scores, ylabel = Frequency, xtick={70, 80, 90, 100, 110, 120, 130, 140, 150}]
\addplot [draw = black, fill = gray] coordinates {
(75,2)
(85,3)
(95, 10)
(105, 16)
(115, 13)
(125, 10)
(135, 5)
(145,1)
};
\end{axis}
\end{tikzpicture}
Básicamente necesito que las barras se toquen entre sí. ¿Alguna idea de lo que necesito hacer?
Respuesta1
Una forma de hacerlo es usar ybar interval
(observe la ligera diferencia en la posición de la marca en el eje x)
\begin{tikzpicture}
\begin{axis} [ybar interval,
grid=none,
xmin=70,xmax=160,ymin=0,ymax=20, xlabel = IQ Scores, ylabel = Frequency, xtick={70, 80, 90, 100, 110, 120, 130, 140, 150}]
\addplot [draw = black, fill = gray] coordinates {
(75,2)
(85,3)
(95, 10)
(105, 16)
(115, 13)
(125, 10)
(135, 5)
(145,1)
(155,0)
};
\end{axis}
\end{tikzpicture}
Respuesta2
Puede establecer el ancho unitario del eje x (p. ej. x=0.1cm
) y el ancho de la barra ( bar width=1cm
ya que el tamaño del paso es 10).
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis} [
ybar,
x=0.1cm,
bar width=1cm,
xmin=70,
xmax=160,
ymin=0,
ymax=20,
xlabel=IQ Scores,
ylabel=Frequency,
xtick={70, 80, 90, 100, 110, 120, 130, 140, 150}
]
\addplot [draw = black, fill = gray] coordinates {
(75,2)
(85,3)
(95, 10)
(105, 16)
(115, 13)
(125, 10)
(135, 5)
(145,1)
};
\end{axis}
\end{tikzpicture}
\end{document}