Visualization¶
Interactive Plotly and statistical Seaborn visualizations for link budgets, missions, trades, and payloads.
Timeline Plots¶
timeline
¶
Time-series visualization functions using Plotly.
plot_link_margin_timeline
¶
plot_link_margin_timeline(times_s, margin_db, outages_mask=None, threshold_db=0.0, title='Link Margin vs Time')
Interactive link margin timeline with hover tooltips and outage shading.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
times_s
|
ndarray
|
1-D array of time stamps in seconds. |
required |
margin_db
|
ndarray
|
1-D array of link margin values in dB, same length as times_s. |
required |
outages_mask
|
ndarray or None
|
Boolean array indicating outage intervals ( |
None
|
threshold_db
|
float
|
Margin threshold in dB drawn as a horizontal dashed line.
Default is |
0.0
|
title
|
str
|
Plot title. Default is |
'Link Margin vs Time'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Interactive Plotly figure with margin trace, outage markers, and threshold line. |
Source code in src/opensatcom/viz/timeline.py
plot_elevation_profile
¶
Interactive elevation vs time plot.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
times_s
|
ndarray
|
1-D array of time stamps in seconds. |
required |
elev_deg
|
ndarray
|
1-D array of elevation angles in degrees, same length as times_s. |
required |
title
|
str
|
Plot title. Default is |
'Elevation Profile'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Interactive Plotly figure showing elevation angle over time. |
Source code in src/opensatcom/viz/timeline.py
Heatmaps¶
heatmaps
¶
Heatmap and 3D surface visualizations using Plotly.
plot_beam_map_interactive
¶
Interactive beam map heatmap with hover details.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
beam_map_df
|
DataFrame
|
DataFrame with columns including |
required |
metric
|
str
|
Name of the column used for marker color scaling.
Default is |
'sinr_db'
|
title
|
str
|
Plot title. Default is |
'Beam Coverage Map'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Interactive Plotly scatter plot of beam positions colored by the selected metric, with per-point hover details. |
Source code in src/opensatcom/viz/heatmaps.py
plot_rain_attenuation_surface
¶
plot_rain_attenuation_surface(freqs_ghz, elevs_deg, rain_rate_mm_per_hr=25.0, title='Rain Attenuation vs Frequency & Elevation')
3D surface plot of rain loss vs frequency vs elevation.
Computes rain attenuation using the ITU-R P.618 model over a grid of frequencies and elevation angles, then renders an interactive 3-D surface.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
freqs_ghz
|
ndarray
|
1-D array of carrier frequencies in GHz (x-axis). |
required |
elevs_deg
|
ndarray
|
1-D array of elevation angles in degrees (y-axis). |
required |
rain_rate_mm_per_hr
|
float
|
Rain rate used by the P.618 model, in mm/hr. Default is |
25.0
|
title
|
str
|
Plot title. Default is |
'Rain Attenuation vs Frequency & Elevation'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Interactive Plotly 3-D surface figure with frequency on the x-axis, elevation on the y-axis, and rain loss in dB on the z-axis. |
Source code in src/opensatcom/viz/heatmaps.py
Trade Study Plots¶
trades
¶
Trade study visualizations using Plotly.
plot_pareto_interactive
¶
Interactive Plotly scatter with Pareto front highlighted.
Renders all design points as semi-transparent markers and overlays the Pareto-optimal subset as a connected star-marker trace.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
Full DOE / trade-study results containing at least x_col and y_col columns. |
required |
x_col
|
str
|
Column name used for the x-axis (e.g., |
required |
y_col
|
str
|
Column name used for the y-axis (e.g., |
required |
pareto_df
|
DataFrame
|
Subset of df representing the Pareto-optimal designs. |
required |
title
|
str
|
Plot title. Default is |
'Pareto Front Analysis'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Interactive Plotly figure with all designs and the Pareto front. |
Source code in src/opensatcom/viz/trades.py
plot_doe_parallel_coords
¶
Parallel coordinates plot for DOE results.
Displays all numeric columns of the DOE results as parallel coordinate axes, colored by the first objective column when provided.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
DOE results with parameter and objective columns. Only numeric columns are included as axes. |
required |
objectives
|
list of str or None
|
Column names to highlight as objectives. The first entry is used
as the color dimension. Default is |
None
|
title
|
str
|
Plot title. Default is |
'DOE Parallel Coordinates'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Interactive Plotly parallel-coordinates figure. |
Source code in src/opensatcom/viz/trades.py
Statistical Plots¶
statistical
¶
Statistical distribution visualizations using Seaborn and Matplotlib.
plot_margin_distribution
¶
KDE + histogram of margin distribution.
Plots a Seaborn histogram with a kernel-density estimate overlay and a vertical reference line at zero margin.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
margin_db
|
ndarray
|
1-D array of link margin values in dB. |
required |
title
|
str
|
Plot title. Default is |
'Link Margin Distribution'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Matplotlib figure containing the histogram/KDE plot. |
Source code in src/opensatcom/viz/statistical.py
plot_modcod_waterfall
¶
Stacked bar showing ModCod selection over time.
Each time step is rendered as a color-coded bar indicating the active ModCod, with a legend mapping colors to ModCod names.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
times_s
|
ndarray
|
1-D array of time stamps in seconds. |
required |
selected_modcod
|
list of str
|
ModCod name selected at each time step, same length as times_s. Empty strings are rendered in light grey. |
required |
title
|
str
|
Plot title. Default is |
'ModCod Selection Over Time'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Matplotlib figure containing the color-coded ModCod waterfall bar chart. |
Source code in src/opensatcom/viz/statistical.py
plot_availability_heatmap
¶
Seaborn heatmap of availability vs parameter pairs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
ndarray
|
2-D array of availability values, typically in the range [0, 1]. |
required |
x_labels
|
list of str or None
|
Tick labels for the columns (x-axis). Default is |
None
|
y_labels
|
list of str or None
|
Tick labels for the rows (y-axis). Default is |
None
|
title
|
str
|
Plot title. Default is |
'Availability Heatmap'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Matplotlib figure containing the annotated Seaborn heatmap with a
|
Source code in src/opensatcom/viz/statistical.py
Constellation Coverage¶
constellation
¶
Constellation and coverage visualizations using Plotly.
plot_constellation_coverage
¶
Plotly polar plot of satellite tracks (az/el) with coverage cone.
Each satellite track is plotted in polar coordinates (azimuth as angle, 90 - elevation as radius so the zenith sits at the center). A dashed circle marks the minimum-elevation visibility boundary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sat_tracks
|
dict of {str: tuple of (np.ndarray, np.ndarray)}
|
Mapping from satellite ID to a |
required |
min_elevation_deg
|
float
|
Minimum elevation angle in degrees for the visibility cone circle.
Default is |
10.0
|
title
|
str
|
Plot title. Default is |
'Satellite Coverage (Az/El)'
|
Returns:
| Type | Description |
|---|---|
Figure
|
Interactive Plotly polar figure with satellite tracks and minimum-elevation boundary. |