Gráficos multidimensionais em Python - de tridimensionais a seis dimensionais

Exemplos de gráficos multidimensionais

1. Introdução


A visualização é uma parte importante da análise de dados, e a capacidade de analisar várias dimensões ao mesmo tempo facilita essa tarefa. No tutorial, desenharemos gráficos de até 6 dimensões.


Plotly é uma biblioteca Python de código aberto para uma variedade de visualizações que oferece muito mais personalização do que o famoso matplotlib e seaborn . O módulo é instalado como de costume - pip install plotly . Vamos usá-lo para desenhar gráficos.


Vamos preparar os dados


Para visualização, usamos dados simples sobre carros da UCI (Universidade da Califórnia, Irvine - aprox. Transl.) , Que representam 26 características de 205 carros (26 colunas para 205 linhas). Para visualizar seis dimensões, tomamos esses seis parâmetros.


Apenas 4 linhas de 205 são mostradas aqui.

Baixe dados do CSV usando pandas .


import pandas as pd data = pd.read_csv("cars.csv") 

Agora, tendo preparado, vamos começar com duas dimensões.


Gráfico de dispersão bidimensional


Um gráfico de dispersão é um gráfico muito simples e comum. Dos 6 parâmetros, preço e peso-meio-termo são usados ​​abaixo como Y e X, respectivamente.


 #    import plotly import plotly.graph_objs as go #  figure fig1 = go.Scatter(x=data['curb-weight'], y=data['price'], mode='markers') #  layout mylayout = go.Layout(xaxis=dict(title="curb-weight"), yaxis=dict( title="price")) #     HTML plotly.offline.plot({"data": [fig1], "layout": mylayout}, auto_open=True) 

Em plotagem, o processo é um pouco diferente do mesmo no Matplotlib. Devemos criar um layout e uma figura , passando-os para a função offline.plot , após a qual o resultado será salvo em um arquivo HTML no diretório de trabalho atual. Aqui está uma captura de tela do que acontece. No final do artigo, haverá um link para o repositório do GitHub com gráficos interativos em HTML prontos.


Gráfico de dispersão bidimensional

Gráfico de dispersão 3D


Podemos adicionar um terceiro parâmetro de potência (quantidade de potência) ao eixo Z. Plotly fornece uma função Scatter3D para criar gráficos 3D interativos.


Gráfico 3D

Em vez de colar o código aqui toda vez, eu o adicionei ao repositório.


(É mais conveniente olhar para o código relevante em uma guia adjacente em paralelo com a leitura - aprox. Transl.)


Adicionando uma quarta dimensão


Sabemos que você não pode usar mais de três dimensões diretamente, mas existe uma solução alternativa: podemos emular a profundidade para visualizar dimensões mais altas usando cor, tamanho ou forma.


Aqui, juntamente com as três características anteriores, usaremos a quilometragem da cidade - city-mpg como a quarta dimensão, pela qual o parâmetro markercolor da função Scatter3D será responsável. Um tom mais claro do marcador significará menos quilometragem.


É imediatamente evidente que, quanto maior o preço, o número de cavalos e a massa, menor a quilometragem.


Gráfico 4D com tons como a quarta dimensão

Adicionando uma quinta dimensão


O tamanho do marcador pode ser usado para visualizar a quinta dimensão. Usamos a característica de tamanho do mecanismo para o parâmetro markersize da função Scatter3D .


Observações: o tamanho do motor está relacionado a alguns dos parâmetros anteriores. Quanto maior o preço, maior o motor. Assim como: menor quilometragem - mais motor.


Gráfico 5D com valor de marcador como quinta dimensão (tamanho do motor)

Adicionando a sexta dimensão


A forma do marcador é ótima para visualizar categorias. Plotly oferece 10 formas diferentes para gráficos 3D (asterisco, círculo, quadrado etc.). Assim, até 10 valores diferentes podem ser mostrados como um formulário.


Temos o número de portas característico , que contém números inteiros - o número de portas (2 ou 4). Transformamos esses valores em figuras: um quadrado para 4 portas, um círculo para 2 portas. O parâmetro markersymbol da função Scatter3D é usado .


Observações: parece que todos os carros mais baratos têm 4 portas (círculos). Continuando a estudar o cronograma, mais suposições e conclusões podem ser feitas.


Gráfico 6D com forma de marcador como sexta dimensão (número de portas)

Podemos adicionar mais dimensões?


Claro que podemos! Os marcadores têm mais propriedades, como opacidade e gradientes, que podem ser ativadas. Porém, quanto mais dimensões adicionamos, mais difícil é mantê-las na cabeça.


Código fonte


Código Python e gráficos interativos para todas as formas estão disponíveis no GitHub aqui.

Source: https://habr.com/ru/post/pt456282/


All Articles