Plots
plots.py — Gráficos de séries temporais das detecções do radar.
Contém três widgets de dispersão (coluna esquerda da UI): - DetectionPlot : Range (m) vs. Tempo (s) - AmplitudePlot : Potência RX (dBm) vs. Tempo (s) - PhasePlot : Fase teórica (rad) vs. Tempo (s)
Todos usam a mesma paleta Jet mapeada pelo erro angular (deg_error): vermelho = centro do feixe (deg_error ≈ 0) azul = borda do feixe (|deg_error| ≈ beamwidth/2)
DetectionPlot
Bases: PlotWidget
Gráfico de dispersão: Range (m) vs. Tempo (s).
Cada ponto representa uma detecção registrada pelo radar. A cor segue a paleta Jet indexada pelo erro angular normalizado: vermelho → detecção no centro do feixe (máximo SNR), azul → detecção na borda do feixe (mínimo SNR).
Uso::
plot = DetectionPlot(ppi=ppi)
plot.add_detections(t=sim.elapsed_time, detection_list=detections)
__init__(ppi=None)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ppi
|
Instância de PPI. Usada para ler a beamwidth do radar. Pode ser None (usa beamwidth padrão de 10°). |
None
|
add_detections(t, detection_list)
Adiciona novas detecções ao histórico e redesenha o gráfico.
A janela X desliza automaticamente para mostrar os últimos
_WINDOW_SIZE segundos quando t > _WINDOW_SIZE.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t
|
float
|
Tempo atual da simulação (s). |
required |
detection_list
|
list[DetectionRecord]
|
Lista de DetectionRecord do passo atual. |
required |
AmplitudePlot
Bases: PlotWidget
Gráfico de dispersão: Potência RX (dBm) vs. Tempo (s).
Exibe a potência recebida calculada pela Equação do Radar para cada detecção, colorida pelo erro angular (mesma paleta Jet do DetectionPlot).
O eixo Y é auto-dimensionado para os pontos visíveis na janela atual, com margem de ±5 dBm. Isso torna fácil observar variações de amplitude ao longo do tempo (ex.: alvo se aproximando ou emergindo da borda do feixe).
__init__(ppi=None)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ppi
|
Instância de PPI. Usada para ler a beamwidth do radar. |
None
|
add_detections(t, detection_list)
Adiciona potências RX das novas detecções ao histórico.
O eixo X desliza com a simulação. O eixo Y se ajusta ao intervalo visível (janela deslizante) com margem de ±5 dBm.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t
|
float
|
Tempo atual da simulação (s). |
required |
detection_list
|
list[DetectionRecord]
|
Lista de DetectionRecord do passo atual. |
required |
PhasePlot
Bases: PlotWidget
Gráfico de dispersão: Fase teórica RX (rad) vs. Tempo (s).
A fase é calculada como::
φ = (4π · R / λ) mod 2π, mapeada para (-π, π]
onde λ = 0.03 m (banda X, 10 GHz). Isso corresponde ao retardo de fase de ida e volta do pulso refletido. O padrão de dispersão em torno da fase indica coerência do sinal ao longo do tempo.
__init__(ppi=None)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ppi
|
Instância de PPI. Usada para ler a beamwidth do radar. |
None
|
add_detections(t, detection_list)
Adiciona fases calculadas das novas detecções ao histórico.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t
|
float
|
Tempo atual da simulação (s). |
required |
detection_list
|
list[DetectionRecord]
|
Lista de DetectionRecord do passo atual. |
required |