Vamos usar um banco de dados que já está no R, USArrests, que consiste de variáveis sobre a taxa de criminalidade para cada 100 mil habitantes por estado americano. Vamos carregar esse banco de dados e verificar algumas informações simples.
#install.package{"ggplot2"}
library(ggplot2)
#carregar conjunto de dados USArrests
data(USArrests)
mydata = USArrests
#ver a dimensão do banco de dados
dim(mydata)
## [1] 50 4
head(mydata) #seis primeiras linhas
## Murder Assault UrbanPop Rape
## Alabama 13.2 236 58 21.2
## Alaska 10.0 263 48 44.5
## Arizona 8.1 294 80 31.0
## Arkansas 8.8 190 50 19.5
## California 9.0 276 91 40.6
## Colorado 7.9 204 78 38.7
tail(mydata) #seis últimas linhas
## Murder Assault UrbanPop Rape
## Vermont 2.2 48 32 11.2
## Virginia 8.5 156 63 20.7
## Washington 4.0 145 73 26.2
## West Virginia 5.7 81 39 9.3
## Wisconsin 2.6 53 66 10.8
## Wyoming 6.8 161 60 15.6
summary(mydata) # sumário estatístico do conjunto de dados
## Murder Assault UrbanPop Rape
## Min. : 0.800 Min. : 45.0 Min. :32.00 Min. : 7.30
## 1st Qu.: 4.075 1st Qu.:109.0 1st Qu.:54.50 1st Qu.:15.07
## Median : 7.250 Median :159.0 Median :66.00 Median :20.10
## Mean : 7.788 Mean :170.8 Mean :65.54 Mean :21.23
## 3rd Qu.:11.250 3rd Qu.:249.0 3rd Qu.:77.75 3rd Qu.:26.18
## Max. :17.400 Max. :337.0 Max. :91.00 Max. :46.00
names(mydata) #nomes das variáveis
## [1] "Murder" "Assault" "UrbanPop" "Rape"
row(mydata) #nomes dos estados norte-americanos
## [,1] [,2] [,3] [,4]
## [1,] 1 1 1 1
## [2,] 2 2 2 2
## [3,] 3 3 3 3
## [4,] 4 4 4 4
## [5,] 5 5 5 5
## [6,] 6 6 6 6
## [7,] 7 7 7 7
## [8,] 8 8 8 8
## [9,] 9 9 9 9
## [10,] 10 10 10 10
## [11,] 11 11 11 11
## [12,] 12 12 12 12
## [13,] 13 13 13 13
## [14,] 14 14 14 14
## [15,] 15 15 15 15
## [16,] 16 16 16 16
## [17,] 17 17 17 17
## [18,] 18 18 18 18
## [19,] 19 19 19 19
## [20,] 20 20 20 20
## [21,] 21 21 21 21
## [22,] 22 22 22 22
## [23,] 23 23 23 23
## [24,] 24 24 24 24
## [25,] 25 25 25 25
## [26,] 26 26 26 26
## [27,] 27 27 27 27
## [28,] 28 28 28 28
## [29,] 29 29 29 29
## [30,] 30 30 30 30
## [31,] 31 31 31 31
## [32,] 32 32 32 32
## [33,] 33 33 33 33
## [34,] 34 34 34 34
## [35,] 35 35 35 35
## [36,] 36 36 36 36
## [37,] 37 37 37 37
## [38,] 38 38 38 38
## [39,] 39 39 39 39
## [40,] 40 40 40 40
## [41,] 41 41 41 41
## [42,] 42 42 42 42
## [43,] 43 43 43 43
## [44,] 44 44 44 44
## [45,] 45 45 45 45
## [46,] 46 46 46 46
## [47,] 47 47 47 47
## [48,] 48 48 48 48
## [49,] 49 49 49 49
## [50,] 50 50 50 50
Você já sabe, mas vamos relembrar, que para saber mais sobre o banco de dados, basta usar o comando help(USArrests).
help(USArrests)
Temos um conjunto de dados em cross-section (ou seja, observações de várias unidades - estados em único período de tempo, 1973). Nesse caso, podemos fazer um gráfico de distribuição de frequência, ou seja, um histograma. Podemos ver, por exemplo, a frequência de assassinatos por estado. Já vimos que ggplot funciona em camadas e nesse caso iremos usar geom_hist() para contar as frequências.
g1 = ggplot(data = mydata) +
geom_histogram(mapping = aes(x = Murder))
g1
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Gráfico de densidade usando kernel gaussiano:
g2 = ggplot(data = mydata) +
geom_density(mapping = aes(x = Murder), kernel = 'gaussian')
g2
Diagrama de caixa ou box-plot (quartis da distribuição, onde podemos analisar a dispersão da variável)
g3 = ggplot(data = mydata) +
geom_boxplot(mapping = aes(x = 1, y = Murder))
g3
Temos também o violin-plot, que segue o mesmo princípio do box-plot, mas é uma combinação deste com um gráfico de densidade.
ggplot(data = mydata) +
geom_violin(mapping = aes(x = 1, y = Murder))
Podemos também facilmente colocar títulos, subtítulos, etc nos nossos gráficos. Vejamos como fazer isso através do exemplo a seguir. Vamos construir o histograma agora para a variável assaltos (Assault), adicionando os títulos:
ggplot(data = USArrests) +
geom_histogram(mapping = aes(x = Assault), bins = 10) +
labs(x = 'Assaltos para cada 100 mil habitantes',
y = 'Frequencia',
title = 'Assaltos em Estados Americanos')
Podemos também alterar as cores das barras, usando o comando fill dentro de geom_histogram. Vejamos:
ggplot(data = USArrests) +
geom_histogram(mapping = aes(x = Assault), bins = 10, fill ='blue') +
labs(x = 'Assaltos para cada 100 mil habitantes',
y = 'Frequencia',
title = 'Assaltos em Estados Americanos')
Para mudar as cores das bordas, usamos o comando color:
ggplot(data = USArrests) +
geom_histogram(mapping = aes(x = Assault), bins = 10, fill ='blue', color='black') +
labs(x = 'Assaltos para cada 100 mil habitantes',
y = 'Frequencia',
title = 'Assaltos em Estados Americanos')
Podemos também alterar o número de barras usando o comando bins (o default é 30):
ggplot(data = USArrests) +
geom_histogram(mapping = aes(x = Assault), bins = 4, fill ='blue', color='black') +
labs(x = 'Assaltos para cada 100 mil habitantes',
y = 'Frequencia',
title = 'Assaltos em Estados Americanos')
Se usarmos o comando fill = rainbow, teremos as barras preenchidas com 4 cores do arco-íris. Vejamos:
ggplot(data = USArrests) +
geom_histogram(mapping = aes(x = Assault), bins = 4, fill =rainbow(4), color='black') +
labs(x = 'Assaltos para cada 100 mil habitantes',
y = 'Frequencia',
title = 'Assaltos em Estados Americanos')
______________________________________________________
Podemos personalizar também o box-plot que fizemos para asssassinatos. Novamente, colour muda a cor do contorno e fill muda a cor do preenchimento.
ggplot(data = USArrests) +
geom_boxplot(mapping = aes(x = 1, y = Murder), color = 'red', fill = 'pink')
____________________________________________________________
Para terminar, vamos fazer um gráfico de dispersão a fim de verificar como o nível de assassinatos se relaciona com o tamanho da população urbana.
ggplot(mydata, aes(x = UrbanPop, y = Murder)) +
geom_point(color='blue', size=4) +
labs(y = "Assassinatos",
x = "População Urbana",
title = "Relação entre assassinatos e População Urbana")