PlotData e a familia de contratos de dados prontos para plot.
Essas estruturas:
- nao carregam regra de leitura de arquivo;
- nao carregam regra de interpretacao semantica da fonte;
- nao carregam kwargs de
matplotlib; - representam apenas o dado ja preparado para um tipo de plot;
- devem, sempre que possivel, carregar arrays ja prontos para o
matplotlib, e nao objetos mais pesados comoxarray.Dataset.
Convencao recomendada para a implementacao inicial:
- arrays numericos devem preferencialmente ser
numpy.ndarray; - eixos temporais devem preferencialmente ser
numpy.ndarraycomdatetime64[ns]; - o objetivo e manter
PlotDataleve, eficiente em memoria e diretamente compativel commatplotlib.
Regra importante:
- na implementacao inicial, nao e necessario criar uma classe base concreta
PlotData; - basta implementar diretamente as dataclasses concretas abaixo;
PlotDatadeve conter o dado principal da camada;- se existir uma sobreposicao semantica adicional, como uma regiao hachurada de
nebulosidade, essa sobreposicao deve preferencialmente virar outra
PlotLayer, com sua propriaPlotDatae sua propriaRenderSpecification; - o campo
draw_mask, quando existir, deve ser entendido principalmente como mecanismo para ocultar ou invalidar pontos da propria camada, e nao como descricao completa de uma camada visual extra.
Representa dados prontos para plot em perfis verticais.
Campos sugeridos:
label- identifica a fonte ou a camada na legenda;
- exemplos:
MONAN_SHOC,MONAN_MYNN,GOAMAZON.
values- array 1D com os valores da variavel ao longo do eixo vertical;
- exemplo: perfil de
theta,rhouwind_speed.
vertical_values- array 1D com os valores do eixo vertical usados no plot;
- exemplo: niveis de pressao ou altura.
vertical_axis- semantica do eixo vertical;
- exemplos:
pressure,height; - esse campo ajuda o plotador a saber, por exemplo, se deve inverter o eixo quando ele estiver em pressao.
auxiliary_vertical_values, opcional- eixo vertical auxiliar apenas para exibicao;
- exemplo: altura calculada a partir de pressao para montar um eixo secundario.
units- unidade da variavel armazenada em
values.
- unidade da variavel armazenada em
draw_mask, opcional- mascara booleana 1D, com o mesmo tamanho de
values; - deve ser usada para ocultar pontos invalidos da propria camada.
- mascara booleana 1D, com o mesmo tamanho de
Uso esperado:
- perfil vertical de modelo;
- perfil vertical observado;
- media temporal de perfis.
Observacao importante:
- se o objetivo for representar, por exemplo, faixas com agua liquida ou
nebulosidade como hachura, isso deve preferencialmente ser modelado como
outra camada de plot, e nao apenas como
draw_maskda curva principal.
Representa dados prontos para plot em mapas e produtos horizontais.
Campos sugeridos:
label- identifica a fonte ou a camada na legenda.
field- array 2D com o campo a ser desenhado.
- a convencao recomendada para o array e
(y, x), em que:yrepresenta o eixo latitude;xrepresenta o eixo longitude.
longitude- coordenadas de longitude compativeis com
field; - pode ser array 1D ou 2D, dependendo da malha.
- coordenadas de longitude compativeis com
latitude- coordenadas de latitude compativeis com
field; - pode ser array 1D ou 2D, dependendo da malha.
- coordenadas de latitude compativeis com
units- unidade do campo.
time_label, opcional- string pronta para exibicao temporal;
- exemplos:
2014-02-15 12 UTC,media 00-06 UTC.
vertical_label, opcional- string pronta para indicar o nivel vertical do campo;
- exemplos:
500 hPa,925 hPa,surface.
draw_mask, opcional- mascara booleana 2D, com o mesmo dominio horizontal de
field; - deve ser usada para ocultar pontos invalidos ou excluidos da propria camada.
- mascara booleana 2D, com o mesmo dominio horizontal de
Uso esperado:
- campos instantaneos;
- medias temporais;
- amplitude de ciclo diurno;
- fase de pico;
- modelo, ERA5 ou observacao gridded.
Representa dados prontos para plot em secoes transversais verticais.
Campos sugeridos:
label- identifica a fonte ou a camada na legenda.
field- array 2D com o campo da secao transversal.
- a convencao recomendada para o array e
(y, x), em que:yrepresenta o eixo vertical;xrepresenta o eixo horizontal do transecto.
transect_values- array 1D com o eixo horizontal da secao;
- exemplo: distancia acumulada em km ao longo do transecto.
transect_label- label do eixo horizontal da secao;
- exemplo:
Distance (km).
vertical_values- array 1D ou 2D com o eixo vertical usado no plot.
vertical_axis- semantica do eixo vertical;
- exemplos:
pressure,height.
auxiliary_vertical_values, opcional- eixo vertical auxiliar apenas para exibicao.
units- unidade do campo.
draw_mask, opcional- mascara booleana 2D com o mesmo shape de
field; - deve ser usada para ocultar pontos invalidos da propria camada.
- mascara booleana 2D com o mesmo shape de
transect_latitude, opcional- latitudes dos pontos amostrados ao longo do transecto.
transect_longitude, opcional- longitudes dos pontos amostrados ao longo do transecto.
start_label, opcional- label textual do inicio do transecto;
- exemplo:
AouManaus.
end_label, opcional- label textual do fim do transecto;
- exemplo:
BouT3.
Uso esperado:
- secoes transversais em campos 3D de modelo;
- media temporal de transectos verticais;
- sobreposicao de superficie colorida, isolinhas e mascaras em um plano vertical.
Observacao importante:
start_labeleend_labelsao apenas metadados textuais dos extremos do transecto;- eles nao substituem
transect_latitudeetransect_longitude, que carregam a geometria real amostrada.
Representa dados prontos para plot em series temporais.
Campos sugeridos:
label- identifica a fonte ou a camada na legenda.
times- sequencia temporal ja normalizada para um formato de referencia unico;
- para esta arquitetura, o formato de referencia recomendado e
numpy.ndarraycomdatetime64[ns]; - o
DataAdapterdeve aceitar entradas comoDatetimeIndex,np.ndarraytemporal ou objetosdatetime, mas deve converter tudo para esse formato de referencia antes de montar aPlotData.
values- array 1D com os valores da variavel ao longo do tempo.
units- unidade da variavel.
site_label, opcional- identificacao textual do sitio ou ponto fixo;
- exemplos:
T3,GOAMAZON,ATTO.
vertical_label, opcional- identificacao textual de um nivel vertical, quando aplicavel;
- exemplos:
50 m,925 hPa.
draw_mask, opcional- mascara booleana 1D com o mesmo tamanho de
values; - deve ser usada para ocultar pontos invalidos da propria camada.
- mascara booleana 1D com o mesmo tamanho de
Uso esperado:
- series temporais em observacoes pontuais em sitio fixo;
- series temporais em estacoes de superficie, torres de fluxo ou sensores como ceilometer;
- comparacao modelo vs observacao;
- comparacao entre configuracoes do mesmo modelo.
Representa dados prontos para plot em uma secao vertical x tempo.
Campos sugeridos:
label- identifica a fonte ou a camada na legenda.
field- array 2D com shape compativel com vertical x tempo;
- esse e o campo principal a ser desenhado por
contourf,contouroupcolormesh. - a convencao recomendada para o array e
(y, x), em que:yrepresenta o eixo vertical;xrepresenta o eixo temporal.
times- eixo temporal ja normalizado;
- deve preferencialmente ser
numpy.ndarraycomdatetime64[ns].
vertical_values- array 1D ou 2D com o eixo vertical usado no plot;
- exemplo: niveis de pressao ao longo do tempo.
vertical_axis- semantica do eixo vertical;
- exemplos:
pressure,height.
auxiliary_vertical_values, opcional- eixo vertical auxiliar apenas para exibicao.
units- unidade do campo.
region_label, opcional- identificacao textual da regiao media usada para montar a secao;
- exemplo:
African DesertouAmazonia central.
draw_mask, opcional- mascara booleana 2D com o mesmo shape de
field; - deve ser usada para ocultar pontos invalidos da propria camada.
- mascara booleana 2D com o mesmo shape de
Uso esperado:
- evolucao temporal de um perfil vertical medio em uma regiao;
- exemplo:
tkemedio em uma area da Amazonia ao longo de 24 h; - sobreposicao com uma serie temporal no mesmo painel, como
hpblconvertido para pressao equivalente.
PlotData= dado pronto para plot;PlotDatanao substituiSourceSpecification;PlotDatanao substituiRenderSpecification;PlotDatae o resultado do preparo realizado peloDataAdapter.