install.packages("plotly")Tutorial pacote Plotly no R
Este documento é um tutorial de introdução ao pacote plotly do R. Muitos dos exemplos desde tutorial são emprestados do tutorial plotly.com.R
O que é o Pacote Plotly do R?
A biblioteca de gráficos Plotly para R permite criar gráficos interativos de alta qualidade, adequados para publicação. Com ela, você pode produzir diversos tipos de visualizações, como gráficos de linha, dispersão, área, barras, barras de erro, caixas, histogramas, mapas de calor, subplots, gráficos com múltiplos eixos e até gráficos 3D (usando WebGL). O Plotly.R é gratuito e de código aberto, e você pode acessar o código-fonte, relatar problemas ou contribuir diretamente no GitHub.
Download e Instalação do Pacote
Para instalar o pacote plotly diretamente do CRAN no R, você pode usar a função install.packages() da seguinte forma:
library(plotly)
library(ggplot2)Criando Gráficos
O Plotly é uma excelente ferramenta para criar gráficos interativos e visualmente atraentes. Você pode usá-lo diretamente com o pacote plotly ou adicionar interatividade aos gráficos feitos com o ggplot2. Essa versatilidade torna o Plotly uma ótima escolha para quem busca gerar visualizações dinâmicas de forma simples.
data(midwest)
fig <- plot_ly(midwest, x = ~percollege, color = ~state, type = "box") #Plot porcentagem de pessoas com ensino superior por estado
figAo gerar um gráfico com o Plotly, ele será renderizado localmente no seu navegador ou no visualizador do RStudio. Esse pacote também permite que você compartilhe gráficos personalizados, tanto antes quanto durante o seu uso, algo que abordarei mais adiante.
Gráficos Básicos
Para criar um gráfico básico com Plotly, você pode tanto usar as funções nativas do plotly quanto aproveitar um gráfico já feito com o ggplot2 e transformá-lo em interativo. Ambas as abordagens são simples e eficientes.
data(iris)
fig <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length)
figCom o gráfico do Plotly, é possível passar o cursor sobre um ponto de dados e visualizar seu valor em uma caixa de pop-up ao lado do ponto. Você também pode personalizar as informações que serão exibidas nessas caixas e ajustar a forma como elas aparecerão, proporcionando uma experiência interativa mais informativa e ajustada às suas necessidades.
Usando o ggplot2
Esse mesmo gráfico pode ser criado usando o ggplot2 e salvo como um objeto. Depois, você pode transformá-lo em um gráfico interativo com a função ggplotly(). Vale notar que nem todos os recursos do ggplot2 são completamente compatíveis com o ggplotly, então pode ser necessário fazer algumas tentativas e ajustes para garantir que tudo funcione corretamente.
fig2<- ggplot(data=iris, aes(x=Sepal.Length, y=Petal.Length))+
geom_point()
ggplotly(fig2)Ao usar o ggplot2, você pode personalizar seus gráficos da mesma maneira que faria com o ggplot. Isso significa que você tem a liberdade de ajustar cores, temas, rótulos, escalas e muito mais, permitindo criar visualizações que atendam exatamente às suas necessidades e preferências. Essa flexibilidade é uma das grandes vantagens do ggplot2 ao trabalhar com gráficos interativos.
#nomes das colunas
colnames(iris)[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
#cor dos pontos por espécies
fig2<- ggplot(data=iris, aes(x=Sepal.Length, y=Petal.Length, colour=Species))+ geom_point()
ggplotly(fig2)Agora você também pode ver que a Espécie aparece na caixa de texto quando você passa o mouse sobre cada ponto.
Assim como no ggplot você pode personalizar o eixo, título, cor, etc…
fig2 <- ggplot(data=iris, aes(x = Sepal.Length, y = Petal.Length))+
geom_point(aes(color=Species, shape=Species))+
xlab("Sepal Length")+
ylab("Petal Length")+
ggtitle("Sepal Length- Petal Length")
ggplotly(fig2)Características dos Plots
Vamos explorar alguns dos recursos que você pode usar ao analisar o gráfico criado com Plotly.
Como mencionado anteriormente, ao passar o mouse sobre os diferentes pontos, você pode obter informações detalhadas sobre eles, incluindo os valores de x e y, além de dados relacionados à sua coloração e/ou agrupamento.
Outro recurso interessante é a capacidade de alternar entre diferentes grupos. Isso é especialmente útil quando você tem muitos pontos sobrepostos de diferentes categorias, permitindo que você visualize melhor os dados e identifique padrões ou tendências sem a confusão visual.
Agora, ao observar a barra de ferramentas no topo do gráfico, você pode explorar ainda mais as funcionalidades disponíveis para navegação:
Salvar gráfico como PNG: Permite que você salve o gráfico em formato de imagem.
Aplicar zoom em uma área específica: Facilita o aumento de uma região específica do gráfico para análise detalhada.
Mostrar panorâmica: Permite que você mova a visualização ao redor do gráfico.
Selecionar um grupo específico de pontos: Você pode usar uma caixa ou laço para destacar um subconjunto de dados.
Aplicar zoom in/out: Aumenta ou reduz a visualização geral do gráfico.
Escala automática: Pode ser utilizada quando os eixos estão definidos, ajustando a visualização automaticamente.
Redefinir para o eixo original: Restaura a visualização padrão do gráfico, caso tenha feito alterações.
Você também pode obter mais informações do gráfico usando os outros três botões:
Alternar linhas de pico: Este botão ativa ou desativa as linhas que conectam os pontos de dados aos eixos, facilitando a visualização das relações entre os dados.
Fechar o recurso hover (padrão): Com esta opção, você pode desativar o recurso de pop-up que exibe informações ao passar o mouse sobre os pontos, caso prefira uma visualização mais limpa.
Comparar hover: Esse recurso permite visualizar informações sobre mais de um ponto ao mesmo tempo. Você pode personalizar essa comparação durante a criação do gráfico, optando por exibir dados com base em valores específicos de x, y ou pelo ponto mais próximo.
Esses botões adicionais oferecem mais maneiras de interagir com os dados e explorar insights de forma mais abrangente.
Outros Exemplos
Aqui mostrarei apenas outros exemplos de gráficos que podem usar o pacote plotly.
Gráficos de barras básico
dat1 <- data.frame(
sex = factor(c("Female","Female","Male","Male")),
time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")),
total_bill = c(13.53, 16.81, 16.24, 17.42)
)
# Gráfico de barras, tempo no eixo x, preenchimento de cor agrupado por sexo -- use position_dodge()
p <- ggplot(data=dat1, aes(x=time, y=total_bill, fill=sex)) +
geom_bar(stat="identity", position=position_dodge())
fig4 <- ggplotly(p)
fig4SF Básico
Observe que, neste exemplo, foi utilizada a função ggplot aninhada dentro da função ggplotly(). Essa abordagem permite que você crie um gráfico básico com ggplot2 e, em seguida, o torne interativo facilmente, aproveitando os recursos do Plotly. Dessa forma, você pode combinar a flexibilidade do ggplot2 na construção de visualizações com a interatividade e os recursos avançados do Plotly.
library(sf)
nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)
fig3 <- ggplotly(
ggplot(nc) +
geom_sf(aes(fill = AREA))
)
fig3Mapas
df <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_february_us_airport_traffic.csv')
# gestilo geográfico
g <- list(
scope = 'usa',
projection = list(type = 'albers usa'),
showland = TRUE,
landcolor = toRGB("gray95"),
subunitcolor = toRGB("gray85"),
countrycolor = toRGB("gray85"),
countrywidth = 0.5,
subunitwidth = 0.5
)
fig <- plot_geo(df, lat = ~lat, lon = ~long)
fig <- fig %>% add_markers(
text = ~paste(airport, city, state, paste("Chegadas:", cnt), sep = "<br />"),
color = ~cnt, symbol = I("square"), size = I(8), hoverinfo = "text"
)
fig <- fig %>% colorbar(title = "Voos de chegada<br />Fevereiro 2011")
fig <- fig %>% layout(
title = 'Aeroportos dos EUA com maior tráfego<br />', geo = g
)
figRaster
A função geom_raster() é utilizada para criar mapas de calor coloridos no ggplot2. Nesse tipo de gráfico, duas variáveis atuam como coordenadas x e y, enquanto uma terceira variável é mapeada para definir a cor dos pixels. Isso permite visualizar a densidade ou a intensidade dos dados em uma grade, onde as cores representam diferentes valores da terceira variável.
library(reshape2)
library(plotly)
df <- melt(volcano)
p <- ggplot(df, aes(Var1, Var2)) +
geom_raster(aes(fill=value)) +
scale_fill_distiller(palette = "Spectral", direction = -1) +
labs(x="Oeste a Leste",
y="Norte a Sul",
title = "Mapa de Elevação de Maunga Whau",
fill = "Elevação") +
theme(text = element_text(family = 'Fira Sans'),
plot.title = element_text(hjust = 0.5))
ggplotly(p)Gráficos de dispersão 3D (Scatter Plots)
Por fim, você pode usar o plotly para criar gráficos de dispersão 3D
mtcars$am[which(mtcars$am == 0)] <- 'Automatico'
mtcars$am[which(mtcars$am == 1)] <- 'Manual'
mtcars$am <- as.factor(mtcars$am)
fig <- plot_ly(mtcars, x = ~wt, y = ~hp, z = ~qsec, color = ~am, colors = c('#BF382A', '#0C4B8E'))
fig <- fig %>% add_markers()
fig <- fig %>% layout(scene = list(xaxis = list(title = 'Weight'),
yaxis = list(title = 'Gross horsepower'),
zaxis = list(title = '1/4 mile time')))
figConclusão
O pacote Plotly em R permite criar gráficos, mapas e muito mais, todos altamente personalizáveis e interativos. Sua integração com o ggplot2 amplia as possibilidades, tornando-as praticamente infinitas. Eu recomendo fortemente que você explore o site Plotly para R para descobrir mais sobre os tipos de gráficos que você pode criar e aprender mais sobre o pacote como um todo.