Gráfico de barras
Un gráfico de barras esta compuesto por rectangulos que van desde el eje X hasta una altura Y.
Así es como se produce un gráfico de barras en altair:
# primero importamos las bibliotecas necesarias
# estos alias son convenciones populares
# pero no son requisitos estrictos
import pandas as pd
import altair as alt
Si estas trabajando con este notebook en un jupyter notebook y no el jupyter lab requerirás ejecutar el siguiente código también.
alt.renderers.enable("notebook")
Los datos con los que vamos a trabajar son de INEGI. En este caso, el número de personas en el país desde 1910.
datos = pd.read_csv("../../datos/poblacion.csv")
Puedes explorar el DataFrame con el método .head() para observar las primeras líneas.
datos.head()
| Periodo | Número de personas | |
|---|---|---|
| 0 | 1910 | 15160369 |
| 1 | 1921 | 14334780 |
| 2 | 1930 | 16552722 |
| 3 | 1940 | 19653552 |
| 4 | 1950 | 25791017 |
Nota que por default .head() sólo muestra las primeras 5 líneas pero puedes pasarle cualquier número entero como parametro.
datos.head(10)
| Periodo | Número de personas | |
|---|---|---|
| 0 | 1910 | 15160369 |
| 1 | 1921 | 14334780 |
| 2 | 1930 | 16552722 |
| 3 | 1940 | 19653552 |
| 4 | 1950 | 25791017 |
| 5 | 1960 | 34923129 |
| 6 | 1970 | 48225238 |
| 7 | 1980 | 66846833 |
| 8 | 1990 | 81249645 |
| 9 | 1995 | 91158290 |
Visualización
alt.Chart(datos).mark_bar().encode(
x = "Periodo:Q",
y = "Número de personas:Q"
)

Nota que utilizamos
x = "Periodo:Q",
y = "Número de personas:Q",
en nuestro gráfico. La Q le esta indicando a altair que interprete los valores de la columna “Periodo” y “Número de personas” como datos de tipo cuantitativo (Q).
Modifica el valor de Y en este gráfico para que sea interpretado como tipo nominal (N), ordinal (O), y temporal (T) para ver como cambia tu gráfico.
# Nominal
alt.Chart(datos).mark_bar().encode(
x = "Periodo:Q",
y = ""
)
# Ordinal
alt.Chart(datos).mark_bar().encode(
x = "",
y = "",
)
# Temporal
alt.Chart(datos).
Bonus
¿Cómo modificarías tu gráfico para que las barras sean horizontales?
# Horizontal