Visualization
Export Formats
from liquiditylife.vizdata.export import (
solution_to_dataframe,
simulation_to_xarray,
to_json_payload,
to_parquet,
)
# Policy grids as tidy DataFrame
df = solution_to_dataframe(solution, ages=[30, 40, 50])
# Simulation paths as xarray Dataset
ds = simulation_to_xarray(sim_result)
# JSON for web dashboards
json_str = to_json_payload(df)
# Parquet for cached sweeps
to_parquet(df, Path("policies.parquet"))
Plotting
from liquiditylife.plotting.age_profiles import plot_age_stock_share
from liquiditylife.plotting.surfaces import plot_policy_surface
from liquiditylife.plotting.comparisons import plot_friction_comparison
from liquiditylife.sweep.surface import policy_surface
# Age profiles
plot_age_stock_share({"High friction": sim_hf, "Frictionless": sim_fl})
# Policy surface heatmap
surface = policy_surface(solution, age=35)
plot_policy_surface(surface, variable="stock_share")
# Friction comparison
plot_friction_comparison({"phi_c=0": sol_0, "phi_c=10": sol_10}, age=35)
Dashboard Integration
Install optional dashboard dependencies:
pip install liquiditylife[viz]
For interactive dashboards, precompute and cache solutions rather than
solving on every slider move. Use io.cache.save_solution() and
io.cache.load_solution().