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 <-2018paste("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") |