Un gráfico de barras representa valores de datos mediante barras verticales, lo que permite comparar distintos conjuntos en paralelo y, en ocasiones, visualizar tendencias. Este tipo de gráfico refleja la relación entre una variable categórica y una numérica: cada categoría se muestra como una barra cuyo tamaño corresponde a su valor. Aunque a menudo se considera una forma simple o incluso poco atractiva de visualización, en realidad es una de las más efectivas para este propósito.
Para mejorar su claridad, conviene:
- Ordenar las barras (especialmente de mayor a menor si la data no tiene un orden natural).
- Añadir anotaciones adecuadas.
- Iniciar siempre en cero para evitar distorsiones.
- Verificar si los ejes son necesarios (en ocasiones pueden eliminarse para simplificar).
- Elegir colores adecuados que faciliten la comparación y resalten la información clave.
0.0.1 Errores habituales:
No debe confundirse con un histograma.
Si las etiquetas de las categorías son extensas, es recomendable usar la versión horizontal.
Ordenar las barras suele ayudar a transmitir mejor la información.
1 Dataset: Precios Agroindustria de Cacao (2012 - 2025)
Archivo:MAG_PreciosAgroindustriaCacao_2025Junio.csv Fuente: Ministerio de Agricultura y Ganadería (MAG), Ecuador Última actualización: Junio 2025
import pandas as pddf = pd.read_csv("mag_preciosagroindustriacacao_2025junio.csv", sep=";")print(df.head())print(df.info())
PACC_ANIO PACC_MES DPA_PROVINCIA DPA_CANTON PACC_PRODUCTO \
0 2012 Enero El Oro Arenillas Cacao seco mezclado
1 2012 Enero El Oro Arenillas Cacao seco mezclado
2 2012 Enero El Oro El Guabo Cacao seco mezclado
3 2012 Enero El Oro El Guabo Cacao seco mezclado
4 2012 Enero El Oro Machala Cacao seco mezclado
PACC_PRESENTACION PACC_TIPO PACC_PRECIO_USD PACC_USD_KG
0 Quintal de 100,00 libras Compra 71.41 1.57
1 Quintal de 100,00 libras Venta 74.06 1.63
2 Quintal de 100,00 libras Compra 73.75 1.63
3 Quintal de 100,00 libras Venta 84.00 1.85
4 Quintal de 100,00 libras Compra 75.00 1.65
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 26246 entries, 0 to 26245
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PACC_ANIO 26246 non-null int64
1 PACC_MES 26246 non-null object
2 DPA_PROVINCIA 26246 non-null object
3 DPA_CANTON 26246 non-null object
4 PACC_PRODUCTO 26246 non-null object
5 PACC_PRESENTACION 26246 non-null object
6 PACC_TIPO 26246 non-null object
7 PACC_PRECIO_USD 26246 non-null float64
8 PACC_USD_KG 26246 non-null float64
dtypes: float64(2), int64(1), object(6)
memory usage: 1.8+ MB
None
2 Plotly
Plotly es una biblioteca de visualización interactiva para Python.
Se centra en la creación de gráficos dinámicos y personalizables que permiten explorar los datos con facilidad.
Gracias a su integración con Dash, también es ampliamente utilizada para el desarrollo de dashboards interactivos y aplicaciones web de análisis de datos.
2.1 Ventajas de Plotly
Interactividad avanzada: zoom, hover, selección de datos, filtros dinámicos.
Amplia variedad de gráficos: desde básicos (barras, líneas, dispersión) hasta complejos (mapas geoespaciales, gráficos 3D, series temporales).
Integración con Dash: permite crear aplicaciones web de análisis sin necesidad de conocimientos avanzados de front-end.
Compatibilidad con múltiples lenguajes: Python, R, Julia y JavaScript.
Listo para producción: ideal para storytelling con datos, reportes ejecutivos y presentaciones interactivas.
import plotly.express as pximport plotly.io as piopio.renderers.default ="notebook"
# Agrupar para obtener el precio promedio por añodf_avg_anio = df.groupby("PACC_ANIO", as_index=False)["PACC_PRECIO_USD"].mean()# Gráfico de barras con colores personalizadosfig = px.bar( df_avg_anio, x="PACC_ANIO", y="PACC_PRECIO_USD", text="PACC_PRECIO_USD", color="PACC_PRECIO_USD", # Colorear según valor color_continuous_scale="Viridis", # Escala de color title="Precio promedio en USD por año", orientation="v", labels={"PACC_ANIO": "Año", "PACC_PRECIO_USD": "Precio USD"})# valores encima de las barrasfig.update_traces( texttemplate="%{text:.2f}", textposition="outside", marker=dict(line=dict(color="black", width=1)) # borde negro a cada barra)# Ajustar diseño generalfig.update_layout( xaxis=dict(type="category", showgrid=True, showline=True, linewidth=2, linecolor="black", tickangle=0# puedes poner -45 si hay muchos años ), yaxis=dict( showgrid=True, gridcolor="lightgray", zeroline=False, title="Precio USD" ), title=dict( font=dict(size=22, family="Arial", color="darkblue"), x=0.5, # centrar título xanchor="center" ), plot_bgcolor="white", # fondo blanco paper_bgcolor="white", font=dict(family="Arial", size=14, color="black"), margin=dict(l=40, r=40, t=80, b=40))# Mostrar gráficofig.show()
import plotly.express as px# Gráfico de barras con colores personalizadosfig = px.bar( df_avg_anio, x="PACC_ANIO", y="PACC_PRECIO_USD", text="PACC_PRECIO_USD", title="Precio promedio en (USD por año)",)# valores encima de las barrasfig.update_traces( texttemplate="%{text:.2f}", textposition="outside", marker=dict(line=dict(color="black", width=1)) # borde negro a cada barra)# Ajustar diseño generalfig.update_layout( xaxis=dict(type="category", showgrid=False, showline=False, linewidth=2, linecolor="black", tickangle=0 , title=None ), yaxis=dict( showgrid=False, #gridcolor="lightgray", zeroline=False, # title="Precio USD", showticklabels=False, # oculta valores del eje Y title=None ), title=dict( font=dict(size=22, family="Arial", color="darkblue"), x=0.5, # centrar título xanchor="center" ), plot_bgcolor="white", # fondo blanco paper_bgcolor="white", font=dict(family="Arial", size=14, color="black"), margin=dict(l=40, r=40, t=80, b=40))# Mostrar gráficofig.show()
3 Panel (HoloViz)
Panel es una librería open-source de Python para crear dashboards, herramientas interactivas y aplicaciones multipágina sin escribir JavaScript. Se integra de forma natural con el ecosistema PyData (pandas, NumPy, Altair, Bokeh, Plotly, Matplotlib, etc.) y ofrece APIs reactivas y callbacks para construir desde prototipos rápidos hasta soluciones complejas listas para producción.
Qué ofrece - Widgets y layouts ricos (sliders, selects, tablas, tabs, grids) con diseño adaptable. - Interactividad declarativa (vinculación de parámetros) y basada en funciones. - Despliegue flexible: Jupyter, panel serve, servidores o exportación a HTML estático. - Parte del ecosistema HoloViz, interoperando con hvPlot, HoloViews y Datashader para datos de gran tamaño.
Ideal para - Exploración de datos interactiva. - Aplicaciones analíticas internas. - Prototipos y demos de ciencia de datos. - Dashboards de monitoreo y reporting.
3.1 Color
import panel as pnpn.extension()# Widget ColorPickercolorpicker = pn.widgets.ColorPicker(name='Color Picker', value='#99ef78')colorpicker
C:\Users\meagu\AppData\Local\Temp\ipykernel_29140\1456278253.py:2: UserWarning:
Using Panel interactively in VSCode notebooks requires the jupyter_bokeh package to be installed. You can install it with:
pip install jupyter_bokeh
or:
conda install jupyter_bokeh
and try again.