utils Module
Shared utility functions for Episia visualizations.
These utilities are used internally by the viz modules but are exported
for advanced users who want to build custom plots with consistent styling.
Functions
Color utilities
-
episia.viz.utils.hex_to_rgb(hex_color)[source]
Convert ‘#rrggbb’ to (r, g, b) tuple.
- Parameters:
hex_color (str)
- Return type:
Tuple[int, int, int]
-
episia.viz.utils.hex_to_rgba_str(hex_color, alpha=1.0)[source]
Convert ‘#rrggbb’ to ‘rgba(r,g,b,a)’ string for Plotly.
- Parameters:
-
- Return type:
str
-
episia.viz.utils.adjust_alpha(hex_color, alpha)[source]
Return rgba string with given alpha convenience wrapper.
- Parameters:
-
- Return type:
str
Scale utilities
-
episia.viz.utils.nice_log_ticks(vmin, vmax)[source]
Generate clean tick values for a log-scale axis.
- Parameters:
-
- Returns:
List of tick values (powers of 10 with optional midpoints).
- Return type:
List[float]
-
episia.viz.utils.symlog_range(values, margin=0.05)[source]
Return (min, max) range for an axis with symmetric margin.
- Parameters:
-
- Returns:
(axis_min, axis_max) tuple.
- Return type:
Tuple[float, float]
CI band utilities
-
episia.viz.utils.ci_band_xy(x, lower, upper)[source]
Build (x_filled, y_filled) lists for a filled CI band (Plotly toself).
- Parameters:
-
- Returns:
(x_poly, y_poly) for go.Scatter(fill=’toself’).
- Return type:
Tuple[List, List]
Annotation utilities
-
episia.viz.utils.p_value_label(p)[source]
Format a p-value as a readable string.
p < 0.001 → ‘p<0.001’
p < 0.01 → ‘p<0.01’
p < 0.05 → ‘p<0.05’
p >= 0.05 → ‘NS (p=x.xxx)’
- Parameters:
p (float | None)
- Return type:
str
-
episia.viz.utils.significance_stars(p)[source]
Return significance stars for a p-value.
p < 0.001 → ‘*’
p < 0.01 → ‘’
p < 0.05 → ‘*’
else → ‘ns’
- Parameters:
p (float | None)
- Return type:
str
Examples
Creating consistent colors:
from episia.viz.utils import hex_to_rgba_str
# Convert hex to rgba with transparency
rgba = hex_to_rgba_str("#1f77b4", alpha=0.3)
# Returns: "rgba(31,119,180,0.3)"
Log scale ticks:
from episia.viz.utils import nice_log_ticks
# Generate clean ticks for range 1 to 10000
ticks = nice_log_ticks(1, 10000)
# Returns: [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000]
P-value formatting:
from episia.viz.utils import p_value_label, significance_stars
print(p_value_label(0.023)) # "p=0.023"
print(significance_stars(0.023)) # "*"
print(p_value_label(0.0005)) # "p<0.001"
print(significance_stars(0.0005)) # "***"
CI band polygon:
from episia.viz.utils import ci_band_xy
x_poly, y_poly = ci_band_xy(
x=time_points,
lower=ci_lower,
upper=ci_upper
)
# Ready for plotly fill="toself"