BestLib, the best lib for graphics - Interactive dashboards for Jupyter with D3.js
Project description
📊 BESTLIB - Beautiful & Efficient Visualization Library
BESTLIB es una librería de visualización interactiva para Jupyter Notebooks que permite crear dashboards con layouts ASCII y gráficos D3.js.
✨ Características
- 🎨 28 tipos de gráficos - Desde básicos hasta visualizaciones avanzadas
- 🔗 Vistas enlazadas - Sincronización automática entre gráficos
- ⚡ Sistema reactivo - Actualización automática sin re-ejecutar celdas
- 🖱️ Interactividad completa - Brush selection, click events, tooltips personalizables
- 📐 Layouts ASCII - Define la disposición de gráficos con texto simple
- 🐼 Soporte pandas nativo - Trabaja directamente con DataFrames sin conversiones
- 🎯 Comunicación bidireccional - Python ↔ JavaScript en tiempo real
📦 Instalación
Desde PyPI
pip install bestlib
Para Google Colab
!pip install bestlib
Nota: Colab ya incluye las dependencias necesarias (pandas, numpy, ipywidgets).
Dependencias Requeridas
BESTLIB requiere las siguientes dependencias (deben instalarse manualmente si no están presentes):
ipython(cualquier versión >= 7.0)ipywidgets(cualquier versión >= 7.0)pandas(cualquier versión >= 1.3.0)numpy(cualquier versión >= 1.20.0)
Nota: El código maneja las importaciones de forma opcional, por lo que BESTLIB funcionará incluso si algunas dependencias no están instaladas (con funcionalidades limitadas).
🚀 Inicio Rápido
Ejemplo Básico
from BESTLIB import MatrixLayout
import pandas as pd
df = pd.read_csv('iris.csv')
# Crear scatter plot interactivo
MatrixLayout.map_scatter('S', df,
x_col='sepal_length',
y_col='petal_length',
category_col='species',
interactive=True)
layout = MatrixLayout("S")
layout.display()
Dashboard con Vistas Enlazadas
from BESTLIB import ReactiveMatrixLayout, SelectionModel
import pandas as pd
df = pd.read_csv('iris.csv')
layout = ReactiveMatrixLayout("""
SH
BB
""", selection_model=SelectionModel())
# Scatter plot principal (selección interactiva)
layout.add_scatter('S', df, x_col='sepal_length', y_col='petal_length',
category_col='species', interactive=True)
# Histograma enlazado (se actualiza automáticamente)
layout.add_histogram('H', column='petal_length', linked_to='S')
# Bar chart enlazado
layout.add_barchart('B', category_col='species', linked_to='S')
layout.display()
📊 Tipos de Gráficos Disponibles
Gráficos Básicos
| Gráfico | Método | Descripción |
|---|---|---|
| Scatter Plot | add_scatter() |
Dispersión con brush selection |
| Bar Chart | add_barchart() |
Barras verticales |
| Grouped Bar | add_grouped_barchart() |
Barras agrupadas por categoría |
| Horizontal Bar | add_horizontal_bar() |
Barras horizontales |
| Histogram | add_histogram() |
Distribuciones con bins configurables |
| Boxplot | add_boxplot() |
Diagramas de caja por categoría |
| Line Chart | add_line() |
Series temporales y múltiples líneas |
| Line Plot | add_line_plot() |
Gráfico de líneas alternativo |
| Pie Chart | add_pie() |
Gráficos circulares |
| Step Plot | add_step() |
Gráfico de escalones |
Gráficos Avanzados
| Gráfico | Método | Descripción |
|---|---|---|
| Heatmap | add_heatmap() |
Mapas de calor |
| Hexbin | add_hexbin() |
Dispersión con bins hexagonales |
| Hist2D | add_hist2d() |
Histograma 2D (densidad bivariada) |
| KDE | add_kde() |
Estimación de densidad kernel |
| Distplot | add_distplot() |
Histograma + KDE + rug plot |
| Rug Plot | add_rug() |
Marcadores marginales |
| QQ Plot | add_qqplot() |
Gráfico cuantil-cuantil |
| ECDF | add_ecdf() |
Función de distribución acumulativa empírica |
| Ridgeline | add_ridgeline() |
Distribuciones apiladas |
| Errorbars | add_errorbars() |
Barras de error |
| Fill Between | add_fill_between() |
Área entre dos curvas |
| Ribbon | add_ribbon() |
Cinta entre series |
Gráficos Especializados
| Gráfico | Método | Descripción |
|---|---|---|
| Violin Plot | add_violin() |
Distribuciones de densidad |
| RadViz | add_radviz() |
Visualización radial multidimensional |
| Star Coordinates | add_star_coordinates() |
Coordenadas estelares |
| Parallel Coordinates | add_parallel_coordinates() |
Coordenadas paralelas |
| Polar | add_polar() |
Gráfico polar/radial |
| Funnel | add_funnel() |
Gráfico de embudo |
💡 Ejemplos de Uso
Dashboard Completo
from BESTLIB import ReactiveMatrixLayout, SelectionModel
import pandas as pd
df = pd.read_csv('data.csv')
layout = ReactiveMatrixLayout("""
SSBB
HHPP
""", selection_model=SelectionModel())
# Vista principal
layout.add_scatter('S', df, x_col='x', y_col='y',
category_col='category', interactive=True)
# Gráficos enlazados
layout.add_barchart('B', category_col='category', linked_to='S')
layout.add_histogram('H', column='value', linked_to='S', bins=20)
layout.add_pie('P', category_col='category', linked_to='S')
layout.display()
Gráficos Avanzados
# KDE (Kernel Density Estimation)
layout.add_kde('K', column='value', linked_to='S')
# Hexbin para datos densos
layout.add_hexbin('H', x_col='x', y_col='y', linked_to='S')
# Heatmap
layout.add_heatmap('M', x_col='col', y_col='row', value_col='val', linked_to='S')
📚 Documentación
- docs/ - Documentación completa
- docs/guides/ - Guías de instalación y uso
- docs/CHANGELOG.md - Historial de cambios
- examples/ - Notebooks con ejemplos completos
🤝 Contribuciones
Desarrollado por Nahia Escalante, Alejandro Rojas y Max Antúnez
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pybestlib-0.2.0.tar.gz.
File metadata
- Download URL: pybestlib-0.2.0.tar.gz
- Upload date:
- Size: 457.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e0fab70eaa1e1001a88ddd0be30e5d865db4813b64f58e743949418b7f00a94
|
|
| MD5 |
9dc2e210673b8b32322059ff47b3094a
|
|
| BLAKE2b-256 |
609a95250da132cbad724460954516ec8dcfba4165b359ac9d9b3c6fe7b25393
|
File details
Details for the file pybestlib-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pybestlib-0.2.0-py3-none-any.whl
- Upload date:
- Size: 535.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b4cb181ed74ad466bc2a649b34ccfbb6c0e0ae2bfd6db2fd2d6b773e1f6c220
|
|
| MD5 |
742dc16359812d54d7d7f69b36d6ccf7
|
|
| BLAKE2b-256 |
d55c99888f292dd8c14769d16365683184898bdedc9a9729eb5ea8bc3848d7c5
|