| """ | |
| Visualization utilities for GeoBotv1 | |
| """ | |
| import numpy as np | |
| from typing import Optional | |
| import matplotlib.pyplot as plt | |
| def plot_scenario_distribution( | |
| scenarios: list, | |
| feature: str, | |
| output_path: Optional[str] = None | |
| ) -> None: | |
| """ | |
| Plot distribution of scenarios for a feature. | |
| Parameters | |
| ---------- | |
| scenarios : list | |
| List of scenarios | |
| feature : str | |
| Feature to plot | |
| output_path : str, optional | |
| Path to save plot | |
| """ | |
| values = [s.features.get(feature, [0])[0] for s in scenarios] | |
| probabilities = [s.probability for s in scenarios] | |
| plt.figure(figsize=(10, 6)) | |
| plt.hist(values, weights=probabilities, bins=30, alpha=0.7, edgecolor='black') | |
| plt.xlabel(feature) | |
| plt.ylabel('Probability') | |
| plt.title(f'Distribution of {feature}') | |
| plt.grid(True, alpha=0.3) | |
| if output_path: | |
| plt.savefig(output_path) | |
| else: | |
| plt.show() | |
| def plot_causal_graph(graph, output_path: Optional[str] = None) -> None: | |
| """ | |
| Plot causal graph. | |
| Parameters | |
| ---------- | |
| graph : CausalGraph | |
| Graph to plot | |
| output_path : str, optional | |
| Path to save plot | |
| """ | |
| graph.visualize(output_path) | |