Gráfico de dispersão em R usando ggplot2 (com exemplo)

Índice:

Anonim

Os gráficos são a terceira parte do processo de análise de dados. A primeira parte trata da extração de dados , a segunda parte trata da limpeza e manipulação dos dados . Por fim, o cientista de dados pode precisar comunicar seus resultados graficamente .

O trabalho do cientista de dados pode ser revisado na imagem a seguir

  • A primeira tarefa de um cientista de dados é definir uma questão de pesquisa. Esta questão de pesquisa depende dos objetivos e metas do projeto.
  • Depois disso, uma das tarefas mais importantes é a engenharia de recursos. O cientista de dados precisa coletar, manipular e limpar os dados
  • Quando essa etapa for concluída, ele pode começar a explorar o conjunto de dados. Às vezes, é necessário refinar e alterar a hipótese original devido a uma nova descoberta.

  • Quando a análise explicativa é alcançada, o cientista de dados deve considerar a capacidade do leitor de compreender os conceitos e modelos subjacentes .
  • Seus resultados devem ser apresentados em um formato que todos os interessados ​​possam entender. Um dos melhores métodos para comunicar os resultados é por meio de um gráfico .
  • Os gráficos são uma ferramenta incrível para simplificar análises complexas.

Neste tutorial, você aprenderá-

  • pacote ggplot2
  • Gráfico de dispersão
  • Eixo de mudança
  • Gráfico de dispersão com valores ajustados
  • Adicione informações ao gráfico
  • Renomear eixo xe eixo y
  • Controle as escalas
  • Tema
  • Salvar plotagens

pacote ggplot2

Esta parte do tutorial se concentra em como fazer gráficos / tabelas com R.

Neste tutorial, você usará o pacote ggplot2. Este pacote é construído sobre a base consistente do livro Grammar of graphics escrito por Wilkinson, 2005. ggplot2 é muito flexível, incorpora muitos temas e especificações de plotagem em um alto nível de abstração. Com o ggplot2, você não pode plotar gráficos tridimensionais e criar gráficos interativos.

No ggplot2, um gráfico é composto dos seguintes argumentos:

  • dados
  • mapeamento estético
  • objeto geométrico
  • transformações estatísticas
  • escalas
  • sistema de coordenadas
  • ajustes de posição
  • lapidação

Você aprenderá como controlar esses argumentos no tutorial.

A sintaxe básica do ggplot2 é:

ggplot(data, mapping=aes()) +geometric objectarguments:data: Dataset used to plot the graphmapping: Control the x and y-axisgeometric object: The type of plot you want to show. The most common object are:- Point: `geom_point()`- Bar: `geom_bar()`- Line: `geom_line()`- Histogram: `geom_histogram()`

Gráfico de dispersão

Vamos ver como o ggplot funciona com o conjunto de dados mtcars. Você começa traçando um gráfico de dispersão da variável mpg e da variável drat.

Gráfico de dispersão básico

library(ggplot2)ggplot(mtcars, aes(x = drat, y = mpg)) +geom_point()

Explicação do código

  • Primeiro, você passa o conjunto de dados mtcars para o ggplot.
  • Dentro do argumento aes (), você adiciona o eixo xe o eixo y.
  • O sinal + significa que você deseja que R continue lendo o código. Torna o código mais legível ao quebrá-lo.
  • Use geom_point () para o objeto geométrico.

Resultado:

Gráfico de dispersão com grupos

Às vezes, pode ser interessante distinguir os valores por um grupo de dados (ou seja, dados de nível de fator).

ggplot(mtcars, aes(x = mpg, y = drat)) +geom_point(aes(color = factor(gear)))

Explicação do código

  • O aes () dentro do geom_point () controla a cor do grupo. O grupo deve ser uma variável de fator. Assim, você converte a engrenagem variável em um fator.
  • Ao todo, você tem o código aes (color = factor (gear)) que altera a cor dos pontos.

Resultado:

Eixo de mudança

Redimensionar os dados é uma grande parte do trabalho do cientista de dados. Em raras ocasiões, os dados vêm em um belo formato de sino. Uma solução para tornar seus dados menos sensíveis a valores discrepantes é redimensioná-los.

ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear)))

Explicação do código

  • Você transforma as variáveis ​​xey em log () diretamente dentro do mapeamento aes ().

Observe que qualquer outra transformação pode ser aplicada, como padronização ou normalização.

Resultado:

Gráfico de dispersão com valores ajustados

Você pode adicionar outro nível de informação ao gráfico. Você pode representar graficamente o valor ajustado de uma regressão linear.

my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear))) +stat_smooth(method = "lm",col = "#C42126",se = FALSE,size = 1)my_graph

Explicação do código

  • gráfico: você armazena seu gráfico no gráfico de variável. É útil para uso posterior ou evitar linhas de códigos muito complexas
  • O argumento stat_smooth () controla o método de suavização
  • método = "lm": regressão linear
  • col = "# C42126": Código para a cor vermelha da linha
  • se = FALSE: Não exibe o erro padrão
  • tamanho = 1: o tamanho da linha é 1

Resultado:

Observe que outros métodos de suavização estão disponíveis

  • glm
  • gam
  • loess: valor padrão
  • aro

Adicione informações ao gráfico

Até agora, não adicionamos informações nos gráficos. Os gráficos precisam ser informativos. O leitor deve ver a história por trás da análise de dados apenas olhando para o gráfico, sem consultar documentação adicional. Conseqüentemente, os gráficos precisam de bons rótulos. Você pode adicionar rótulos com a função labs ().

A sintaxe básica para lab () é:

lab(title = "Hello Guru99")argument:- title: Control the title. It is possible to change or add title with:- subtitle: Add subtitle below title- caption: Add caption below the graph- x: rename x-axis- y: rename y-axisExample:lab(title = "Hello Guru99", subtitle = "My first plot")

Adicione um título

Uma informação obrigatória a adicionar é obviamente um título.

my_graph +labs(title = "Plot Mile per hours and drat, in log")

Explicação do código

  • my_graph: Você usa o gráfico que armazenou. Isso evita reescrever todos os códigos cada vez que você adiciona novas informações ao gráfico.
  • Você envolve o título dentro do laboratório ().
  • Código para a cor vermelha da linha
  • se = FALSE: Não exibe o erro padrão
  • tamanho = 1: o tamanho da linha é 1

Resultado:

Adicione um título com um nome dinâmico

Um título dinâmico é útil para adicionar informações mais precisas ao título.

Você pode usar a função paste () para imprimir texto estático e texto dinâmico. A sintaxe básica de paste () é:

paste("This is a text", A)arguments- " ": Text inside the quotation marks are the static text- A: Display the variable stored in A- Note you can add as much static text and variable as you want. You need to separate them with a comma

Exemplo:

A <-2010paste("The first year is", A)

Resultado:

## [1] "The first year is 2010"
B <-2018

paste("The first year is", A, "and the last year is", B)

Resultado:

## [1] "The first year is 2010 and the last year is 2018" 

Você pode adicionar um nome dinâmico ao nosso gráfico, ou seja, a média de mpg.

mean_mpg <- mean(mtcars$mpg)my_graph + labs(title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg))

Explicação do código

  • Você cria a média de mpg com a média (mtcars $ mpg) armazenada na variável mean_mpg
  • Use o paste () com mean_mpg para criar um título dinâmico retornando o valor médio de mpg

Resultado:

Adicionar uma legenda

Dois detalhes adicionais podem tornar seu gráfico mais explícito. Você está falando sobre a legenda e a legenda. O subtítulo fica logo abaixo do título. A legenda pode informar sobre quem fez o cálculo e a fonte dos dados.

my_graph +labs(title ="Relation between Mile per hours and drat",subtitle ="Relationship break down by gear class",caption = "Authors own computation")

Explicação do código

  • Dentro do laboratório (), você adicionou:
    • title = "Relação entre milhas por hora e drat": Adicione o título
    • subtitle = "Relacionamento discriminado por classe de engrenagem": Adicionar legenda
    • caption = "Autores própria computação: Adicionar legenda
    • Você separa cada nova informação com uma vírgula,,
  • Observe que você quebra as linhas de código. Não é obrigatório e só ajuda a ler o código mais facilmente

Resultado:

Renomear eixo xe eixo y

As próprias variáveis ​​no conjunto de dados podem nem sempre ser explícitas ou, por convenção, usar _ quando houver várias palavras (ou seja, GDP_CAP). Você não quer que esse nome apareça em seu gráfico. É importante alterar o nome ou adicionar mais detalhes, como as unidades.

my_graph +labs(x = "Drat definition",y = "Mile per hours",color = "Gear",title = "Relation between Mile per hours and drat",subtitle = "Relationship break down by gear class",caption = "Authors own computation")

Explicação do código

  • Dentro do laboratório (), você adicionou:
    • x = "definição Drat": alterar o nome do eixo x
    • y = "Milha por hora": altera o nome do eixo y

Resultado:

Controle as escalas

Você pode controlar a escala do eixo.

A função seq () é conveniente quando você precisa criar uma sequência de números. A sintaxe básica é:

seq(begin, last, by = x)arguments:- begin: First number of the sequence- last: Last number of the sequence- by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`

Por exemplo, se você deseja criar um intervalo de 0 a 12 com um passo de 3, você terá quatro números, 0 4 8 12

seq(0, 12,4)

Resultado:

## [1] 0 4 8 12 

Você pode controlar a escala do eixo xey conforme abaixo

my_graph +scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +labs(x = "Drat definition",y = "Mile per hours",color = "Gear",title = "Relation between Mile per hours and drat",subtitle = "Relationship break down by gear class",caption = "Authors own computation")

Explicação do código

  • A função scale_y_continuous () controla o eixo y
  • A função scale_x_continuous () controla o eixo x .
  • O parâmetro quebras controla a divisão do eixo. Você pode adicionar manualmente a sequência de números ou usar a função seq ():
    • seq (1, 3,6, por = 0,2): Crie seis números de 2,4 a 3,4 com uma etapa de 3
    • seq (1, 1,6, por = 0,1): Crie sete números de 1 a 1,6 com um passo de 1

Resultado:

Tema

Finalmente, R nos permite customizar o enredo com diferentes temas. A biblioteca ggplot2 inclui oito temas:

  • theme_bw ()
  • theme_light ()
  • theme_classis ()
  • theme_linedraw ()
  • theme_dark ()
  • theme_minimal ()
  • theme_gray ()
  • theme_void ()
my_graph +theme_dark() +labs(x = "Drat definition, in log",y = "Mile per hours, in log",color = "Gear",title = "Relation between Mile per hours and drat",subtitle = "Relationship break down by gear class",caption = "Authors own computation")

Resultado:

Salvar plotagens

Após todas essas etapas, é hora de salvar e compartilhar seu gráfico. Você adiciona ggsave ('NOME DO ARQUIVO) logo após traçar o gráfico e ele será armazenado no disco rígido.

O gráfico é salvo no diretório de trabalho. Para verificar o diretório de trabalho, você pode executar este código:

directory <-getwd()directory 

Vamos plotar o seu gráfico fantástico, salvá-lo e verificar a localização

my_graph +theme_dark() +labs(x = "Drat definition, in log",y = "Mile per hours, in log",color = "Gear",title = "Relation between Mile per hours and drat",subtitle = "Relationship break down by gear class",caption = "Authors own computation")

Resultado:

ggsave("my_fantastic_plot.png.webp")

Resultado:

## Saving 5 x 4 in image

Nota : Apenas para fins pedagógicos, criamos uma função chamada open_folder () para abrir a pasta do diretório para você. Você só precisa executar o código abaixo e ver onde a imagem está armazenada. Você deve ver um arquivo denominado my_fantastic_plot.png.webp.

# Run this code to create thefunctionopen_folder <- function(dir) {if (.Platform['OS.type'] == "windows") {shell.exec(dir)} else {system(paste(Sys.getenv("R_BROWSER"), dir))}}# Call thefunction to open the folder open_folder(directory)

Resumo

Você pode resumir os argumentos para criar um gráfico de dispersão na tabela abaixo:

Objetivo

Código

Gráfico de dispersão básico

ggplot(df, aes(x = x1, y = y)) + geom_point()

Gráfico de dispersão com grupo de cores

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm")

Adicionar valores ajustados

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1))

Adicionar título

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))

Adicionar legenda

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))

Renomear x

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")

Renomear y

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")

Controle a escala

ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1)

Criar registros

ggplot(df, aes(x =log(x1), y = log(y))) + geom_point()

Tema

ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic()

Salve 

ggsave("my_fantastic_plot.png.webp")