Feature Request: Implement Bagplot (Bivariate Boxplot) for 2D and 3D Data Visualization
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 18.8k
- Forks
- 2.8k
- Merge medio
- 16 h 26 min
- PR fusionados (30 d)
- 21
Descripción
This proposal suggests adding support for Bagplots (also known as bivariate boxplots) as a new visualization type in Plotly.
Bagplots are a powerful extension of the traditional boxplot to two or more dimensions, providing a powerful vizualisation which shows statistical properties of 2-3 different variables.
While Plotly currently provides strong support for univariate distribution plots (box, violin, histogram), there is no direct tool to visualize bivariate distribution summaries in a similar “statistical boxplot” style.
The Bagplot, introduced by Rousseeuw, Ruts, and Tukey (1999), fills this gap by visualizing the data depth and outliers in 2D (and potentially 3D) space.
It provides an intuitive, robust alternative to kernel density estimates or convex hulls when exploring multivariate data.
Reference:
Rousseeuw, P. J., Ruts, I., & Tukey, J. W. (1999). The Bagplot: A Bivariate Boxplot. The American Statistician, 53(4), 382–387.
ResearchGate link
Figure 1: Example of a 2D Bagplot showing data depth and outliers (adapted from Rousseeuw et al., 1999).
Proposed Functionality
Using the plotly api:
Express:
import plotly.express as px
# 2D Bagplot
fig2d = px.bagplot(df, x="feature1", y="feature2", depth_method="tukey", show_outliers=True)
fig2d.show()
# 3D Bagplot
fig3d = px.bagplot_3d(df, x="feature1", y="feature2", z="feature3",
depth_method="tukey", show_outliers=True)
fig3d.show()
Graph Objects:
import plotly.graph_objects as go
fig = go.Figure(data=go.Bagplot(
x=df["feature1"],
y=df["feature2"],
show_outliers=True,
depth_method="tukey"
))
fig.show()
fig = go.Figure(data=go.Bagplot3D(
x=df["x"], y=df["y"], z=df["z"],
show_outliers=True,
depth_method="tukey"
))
fig.show()
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
No se nombran archivos de implementación ni pruebas. Comienza revisando las APIs de Python Express y graph_objects de Plotly junto con el artículo de Bagplot mencionado, y luego aclara si el alcance incluye 2D, 3D o ambos; se considera terminado cuando haya una API acordada y un comportamiento de visualización correspondiente para las funcionalidades de data-depth y valores atípicos solicitadas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- plotly, python
- Área
- data-visualization
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 30/100