Estou trabalhando em uma simulação física 2D e coletando dados no tempo em vários pontos. Esses pontos discretos são ao longo de linhas verticais, com várias linhas na direção axial. Isso torna o conjunto de dados efetivamente 4D.
Por exemplo, suponha que eu tenha pontos de coleta nas coordenadas (X, Y) de:
- (0,0), (1,0), (2,0)
- (0,1), (1,1), (2,1)
- (0,2), (1,2), (2,2)
e em cada ponto estou coletando onde é pressão, é temperatura, são os componentes X e Y da velocidade. A cada iteração da simulação, essas variáveis são armazenadas para todos os 9 pontos de coleta. Portanto, todos os meus dados são contínuos no tempo, em cada ponto discreto do espaço.
Por exemplo, os dados para um único ponto se pareceriam com:
Estou interessado em mostrar, digamos, pressão em todos os momentos, para mostrar ondas verticais e axiais. Se eu fizesse isso em uma única linha (vertical ou axial), poderia usar um gráfico em cascata com eixos (Y, tempo, Pressão). Mas se eu tiver 3 linhas verticais e 3 linhas axiais, seriam 6 parcelas em cascata para obter uma imagem completa do movimento das ondas nas duas direções. As coordenadas espaciais são variáveis discretas enquanto o campo (neste caso Pressão) e o tempo são contínuos.
Nas figuras acima, por exemplo, o grande pico de pressão em pode estar viajando na direção X ou Y.
Existe um método para mostrá-los todos de uma vez? Geralmente, é possível adicionar cor para tornar visível a "quarta dimensão", mas existe outra abordagem possível? Pretendo traçar o maior número possível de maneiras para ver se alguma coisa revela informações que outras pessoas não revelam;
E se a simulação fosse 3D e eu tivesse um conjunto de dados resultante em 5D? Isso muda os possíveis métodos de visualização?
Respostas:
Eu mesmo tinha alguns dados tridimensionais. Embora eu finalmente tenha decidido por uma pequena seleção de cortes tridimensionais, uma opção é o Gráfico de coordenadas paralelas . Isso funciona para um número arbitrário de dimensões! Da Wikipedia:
fonte
Gráficos de pares : Este não é um método de redução de dimensionalidade, mas é uma maneira realmente boa de obter uma visão geral rápida de onde podem estar alguns relacionamentos significativos. Em R, o pacote base contém a
pairs()
função, que é boa para dados contínuos (converte tudo em contínuo). Uma função melhor éggpairs()
, doGGally
pacote:fonte
A Análise de Componentes Principais geralmente é uma boa opção para redução de dimensão na maioria dos casos. Não tenho certeza de que será adequada ao seu problema específico, mas encontrará as dimensões ortogonais nas quais a maioria das variações de amostras de dados é capturada. Se você desenvolver em R, poderá usar
prcomp()
para simplesmente converter sua matriz original de pontos de dados no formulário PCA.fonte
Aqui estão algumas maneiras de retratar dados 3D com o ggplot2. Você pode combinar abordagens (facetas, cores, formas, etc.) para aumentar a dimensionalidade do seu gráfico.
fonte
APdf <- data.frame(Time=c(time(AirPassengers)), Year=c(floor(time(AirPassengers))), Month=c(cycle(AirPassengers)), Value=c(AirPassengers)) ; APdf$Month <- month.abb[APdf$Month] ; ggplot(APdf, aes(x=Time, y=Value)) + facet_wrap(facets='Month') + geom_line(data=APdf[,c(1,4)], colour='gray') + geom_point()
. Caramba, eu amo ggplot2.Este gráfico mostra os perfis de velocidade em diferentes locais axiais, fornecendo um mapa 2D do campo de fluxo. As linhas verticais representam 0 velocidade. As regiões sem pontos não fazem parte do domínio computacional. Claro que isso não é facilmente extensível a dados 3D ...
fonte