Skip to content

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