Como criar gráficos em 3D utilizando R e MATLAB?

Confira nosso curso online de QGIS

Veja como utilizar diferentes funções no R e no MATLAB para criar seus gráficos de dispersão (scatterplot) em três dimensões (3D).

A Mecânica dos Fluídos é o ramo da Física que lida com o comportamento da matéria nos estados líquido e gasoso.

Os fluídos são definidos como substâncias no estado líquido ou gasoso que se deformam de forma contínua enquanto estiverem sob uma ação cisalhante.

Seu estudo tem várias aplicações, desde engenharia aeronáutica e oceanografia até fluxo sanguíneo e voo de animais.

Dentro da mecânica dos fluídos, temos a hidráulica, que reduz um pouco mais a abrangência de estudo da matéria para apenas a água (em seu estado líquido).

Na hidráulica, as propriedades físicas da água são extremamente relevantes, sendo que utilizaremos algumas delas nesta postagem para criar gráficos de dispersão em três dimensões.

Os dados que utilizaremos aqui são do livro “Fundamentos da Engenharia Hidráulica“, dos autores Marcio Baptista e Márcia Lara.

A massa específica representa a relação entre a massa do fluído e o seu volume. Ela também pode ser denominada como densidade absoluta.

E a pressão de vapor refere-se à pressão na qual o líquido passa para o estado gasoso.

Como essas duas propriedades variam com a temperatura, iremos utilizar elas em conjunto para criarmos gráficos em 3D no R e MATLAB.

Gráfico de Dispersão em 3D no R

A criação de gráficos de dispersão (ou “scatterplot”) no R pode ser realizada utilizando a função scatterplot3d.

Esta função pertence à biblioteca de mesmo nome, devendo, antes de utilizá-la, ser instalada e carregada. O código abaixo demonstra esse procedimento.


install.packages("scatterplot3d") # Instala o pacote ScatterPlot3D
library("scatterplot3d") # Carrega o pacote ScatterPlot3D

Agora com a biblioteca carregada, podemos importar nossos dados com as propriedades físicas da água.

No código abaixo, utilizamos a função read.csv para carregar o arquivo no formato csv, em seguida, modificamos os nomes das colunas do nosso data.frame e criamos uma variável para ser utilizada como rótulo.


dados <- read.csv("C:/Users/ferna/Desktop/aguaB2E.csv", header = TRUE)
names(dados) <- c("temp", "massa.esp", "pressao.vapor")
nomes <- c("Temperatura (ºC)", "Massa Específica (kg/m3)","Pressão de Vapor (Pa)")

Com os dados devidamente carregados, podemos aplicar a função scatterplot3d. O código abaixo mostra três formas de usá-la.


scatterplot3d(dados$pressao.vapor, dados$massa.esp, dados$temp)
# scatterplot3d(dados[,3], dados[,2], dados[,1])
# scatterplot3d(dados[,3:1])

O resultado do código acima é apresentado na figura a seguir.

Chamada simples da função scatterplot3d.
Chamada simples da função scatterplot3d.

Caso você queira rotacionar a imagem, você deverá alterar o parâmetro angle, dentro da função scatterplot3d, conforme código abaixo.


scatterplot3d(dados[,3:1], angle = 70) # Exemplo para rotação do gráfico

Note que há poucos detalhes na figura já apresentada, para complementar ela com rótulos nos eixos e modificar sua cor, utilize os parâmetros:

  • main: Título do Gráfico;
  • xlab, ylab, zlab: Rótulos dos eixos x,y e z;
  • pch: Tipo do Ponto (Exemplos);
  • color: Cor.

scatterplot3d(dados[,3:1], main = "Propriedades Físicas da Água",
xlab = nomes[3], ylab = nomes[2], zlab = nomes[1],
pch = 16, color = "greenyellow")

Por fim, ainda podemos colocar uma linha ligando os nossos pontos com o plano x-y. Para isso, podemos adicionar o parâmetro type e igualá-lo à h. Tanto o código e a figura são apresentadas abaixo.


scatterplot3d(dados[,3:1], main = "Propriedades Físicas da Água",
xlab = nomes[3], ylab = nomes[2], zlab = nomes[1],
pch = 16, color = "greenyellow", type = "h")

Gráfico de Dispersão com as Propriedades Físicas da Água
Gráfico de Dispersão com as Propriedades Físicas da Água

Agora, se você quer algo mais interativo, você pode utilizar as bibliotecas rgl e car.

Por meio da biblioteca rgl, o pacote car consegue abrir uma nova janela e criar gráficos em 3D que podem ser rotacionados.

O código abaixo demonstra desde o carregamento das bibliotecas citadas, até o desenvolvimento dos gráficos de dispersão em 3D.


install.packages(c("rgl", "car"))
library("car")

scatter3d(dados[,3], dados[,2], dados[,1])

O resultado desse código será aberto em uma nova janela.

Gráfico de dispersão criado no R com os pacotes rgl e car.
Gráfico de dispersão criado no R com os pacotes rgl e car.

Caso você queira remover a superfície criada, utilize o parâmetro surface (coloque ele como FALSE). O código abaixo mostra esse procedimento e adiciona alguns rótulos.


scatter3d(dados[,3], dados[,2], dados[,1], point.col = "greenyellow",
surface = FALSE, xlab = "Pressao Vapor (Pa)",
ylab = "Massa Especifica (kg/m3)", zlab = "Temperatura (C)")

Gráfico de dispersão criado no R com os pacotes rgl e car (sem superfície).
Gráfico de dispersão criado no R com os pacotes rgl e car (sem superfície).

Evite utilizar caracteres especiais nos rótulos, caso você utilize, o rgl não irá mostrá-los.

Outra função para gráficos em 3D são aquelas da biblioteca plotly, mas deixaremos ela para outra postagem.

Gráfico de Dispersão em 3D no MATLAB

No MATLAB, vamos iniciar carregando nossos dados. Para isso, iremos utilizar a função csvread.


dados = csvread('C:/Users/ferna/Desktop/aguaB2E.csv', 1,0);

Lembre-se que a função csvread só aceita dados numéricos, por isso, pedimos ao MATLAB para carregar os dados após a primeira linha.

Os gráficos de dispersão podem ser gerados com a função scatter3, onde forneceremos os dados de entrada, ou ainda podemos informar se os pontos serão preenchidos (filled) e a sua cor (green).


scatter3(dados(:,3), dados(:,2), dados(:,1), 'filled', 'green')
view(-30,10)

Utilizamos a função view para rotacionar o gráfico antes dele ser aberto. O resultado é apresentado na figura abaixo.

Gráfico de Dispersão em 3D no MATLAB.
Gráfico de Dispersão em 3D no MATLAB.

Para adicionar rótulos e títulos, utilize os comandos title, xlabel, ylabel e zlabel após chamar a função scatter3.


figure
scatter3(dados(:,3), dados(:,2), dados(:,1), 'filled', 'green')
title('Propriedades Físicas da Água')
xlabel('Pressão de Vapor (Pa)')
ylabel('Massa Específica (kg/m3)')
zlabel('Temperatura (ºC)')

Desta forma, você irá obter a seguinte figura.

Gráfico de Dispersão com título e rótulos no MATLAB.
Gráfico de Dispersão com título e rótulos no MATLAB.

Você também pode utilizar a função plot3 para criar gráficos em três dimensões, basta utilizar os mesmos dados e substituir scatter3 por plot3 (neste caso, ele irá gerar uma linha no lugar dos pontos).


plot3(dados(:,3), dados(:,2), dados(:,1))
grid on % Liga as grades do gráfico
title('Propriedades Físicas da Água')
xlabel('Pressão de Vapor (Pa)')
ylabel('Massa Específica (kg/m3)')
zlabel('Temperatura (ºC)')

O resultado deste código é apresentado abaixo.

Gráfico em 3D utilizando a função plot3 do MATLAB.
Gráfico em 3D utilizando a função plot3 do MATLAB.

E com isso chegamos ao fim da nossa postagem. Agora você têm duas ferramentas para criar seus próprios gráficos em 3D.

Caso tenha ficado com alguma dúvida, utilize os comentários que estaremos respondendo assim que possível.

Fontes Consultadas:

Scatterplot3d: 3D graphics - R software and data visualization. Disponível em: <http://www.sthda.com/english/wiki/scatterplot3d-3d-graphics-r-software-and-data-visualization>. Acesso em 26 ago. 2018.

Amazing interactive 3D scatter plots - R software and data visualization. Disponível em: <http://www.sthda.com/english/wiki/amazing-interactive-3d-scatter-plots-r-software-and-data-visualization>. Acesso em 26 ago. 2018.

BAPTISTA, Marcio; LARA, Márcia. Fundamentos de Engenharia Hidráulica. UFMG, 2014. 471 pg.


Clique na figura abaixo e assine nossa lista de emails para receber nosso ebook "Como criar mapas de localização com ArcGIS 10.x".

Apostila Mapa de Localização Banner

Author: Fernando BS

Engenheiro Ambiental e de Segurança do Trabalho. Atua nas áreas de geoprocessamento, mineração e hidrologia. Busca soluções utilizando softwares como QGIS, R e Python.

3 thoughts on “Como criar gráficos em 3D utilizando R e MATLAB?”

  1. Deixem o arquivo usado disponível, afim de podermos executá-lo! Caso tenham deixado, não conseguir visualizar, logo, desconsiderem esse post.

    1. Bom dia Samuel,

      Os dados que utilizamos estão no livro “Fundamentos de Engenharia Hidráulica”, especificamente na página 40 – Quadro 2.4 (Propriedades Físicas da Água), o link esta na esta na postagem.

  2. Prezado Fernando, seria possível alterar os dois gráficos abaixo para 3D (surf)?

    %———————-Plotagem dos Resultados—————————-
    figure(1)
    [X,Y]=meshgrid(x*10,y*10);
    contourf(X,Y,T,0:100:1600)
    title(‘Temperatura na superfície da placa’)
    xlabel(‘x (cm)’); ylabel(‘y (cm)’); zlabel(‘z’)
    xmin=min(x);
    ylarg=larg/2;
    view([0,0,1])
    colorbar
    figure(2)
    [X,Z]=meshgrid(x*10,z*100);
    contourf(X,Z,TZ,0:100:1600)
    title(‘Temperatura no plano XZ da placa’)
    xlabel(‘x (cm)’); ylabel(‘z (cm)’); zlabel(‘z’)
    xmin=min(x);
    ylarg=larg/2;
    view([0,0,1])
    colorbar

Deixe um comentário para Fernando BS Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *