diff --git a/plots/letsplot/boxplot/box-basic/default.py b/plots/letsplot/boxplot/box-basic/default.py new file mode 100644 index 0000000000..d13a7d46dd --- /dev/null +++ b/plots/letsplot/boxplot/box-basic/default.py @@ -0,0 +1,62 @@ +""" +box-basic: Basic Box Plot +Library: letsplot +""" + +import numpy as np +import pandas as pd +from lets_plot import ( + LetsPlot, + aes, + element_text, + geom_boxplot, + ggplot, + ggsave, + ggsize, + labs, + scale_fill_manual, + theme, + theme_minimal, +) + + +LetsPlot.setup_html() + +# Data +np.random.seed(42) +data = pd.DataFrame( + { + "group": ["A"] * 50 + ["B"] * 50 + ["C"] * 50 + ["D"] * 50, + "value": np.concatenate( + [ + np.random.normal(50, 10, 50), + np.random.normal(60, 15, 50), + np.random.normal(45, 8, 50), + np.random.normal(70, 20, 50), + ] + ), + } +) + +# Color palette from style guide +colors = ["#306998", "#FFD43B", "#DC2626", "#059669"] + +# Create plot +plot = ( + ggplot(data, aes(x="group", y="value", fill="group")) + + geom_boxplot(alpha=0.8, outlier_size=3) + + scale_fill_manual(values=colors) + + labs(x="Group", y="Value", title="Basic Box Plot") + + theme_minimal() + + theme( + plot_title=element_text(size=20), + axis_title=element_text(size=20), + axis_text=element_text(size=16), + legend_title=element_text(size=16), + legend_text=element_text(size=16), + ) + + ggsize(1600, 900) +) + +# Save as PNG (scale 3x to get 4800 x 2700 px) +ggsave(plot, "plot.png", path=".", scale=3)