[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon Profundamente Trivial, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)
Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.
Essas próximas duas postagens tratam de escalas de formatação no ggplot2 – eixo x, eixo y -, então tentarei limitar a quantidade de sobreposição e repetição.
Digamos que eu queira plotar minha leitura ao longo do tempo, especificamente como uma soma acumulada de páginas ao longo do ano. Meu eixo x será uma data. Como meu arquivo read2019 formata inicialmente minhas datas como caractere, preciso usar meu código de mutação para transformá-las em datas, além de calcular minha soma acumulada de páginas lidas.
reads2019 read_csv("~/Downloads/Blogging A to Z/SaraReads2019_allchanges.csv",
col_names = TRUE)
reads2019 reads2019 %>%
mutate(date_started = as.Date(reads2019$date_started, format = '%m/%d/%Y'),
date_read = as.Date(date_read, format = '%m/%d/%Y'),
PagesRead = order_by(date_read, cumsum(Pages)))
Isso me fornece as variáveis necessárias para plotar minhas páginas lidas com o tempo.
O ggplot2 fez um bom trabalho ao criar esse gráfico usando as configurações padrão. Como minha variável date_read é uma data, o gráfico ordenou automaticamente date_read, formatado como “Month Year Year”, e usou trimestres como intervalos. Mas ainda podemos usar as funções scale_x para tornar esse gráfico ainda melhor.
Uma maneira poderia ser formatar os anos como 2 dígitos em vez de 4. Também poderíamos ter intervalos de mês em vez de trimestres.
reads2019 %>%
ggplot(aes(date_read, PagesRead)) +
geom_point() +
scale_x_date(date_labels = "%b %y",
date_breaks = "1 month")
É claro que poderíamos deixar o ano completamente e apenas mostrar o mês, já que todos esses dados são de 2019. Poderíamos observar isso no título.
reads2019 %>%
ggplot(aes(date_read, PagesRead)) +
geom_point() +
scale_x_date(date_labels = "%B",
date_breaks = "1 month") +
labs(title = "Cumulative Pages Read Over 2019") +
theme(plot.title = element_text(hjust = 0.5))
Amanhã, mostrarei alguns truques sobre como podemos formatar o eixo y desse gráfico. Mas vamos ver o que mais podemos fazer com o eixo x. Vamos criar um gráfico de barras com meus dados de gênero. Usarei os nomes de gênero que criei para meus dados resumidos na semana passada.
genres reads2019 %>%
group_by(Fiction, Childrens, Fantasy, SciFi, Mystery) %>%
summarise(Books = n())genres genres %>%
bind_cols(Genre = c("Non-Fiction",
"General Fiction",
"Mystery",
"Science Fiction",
"Fantasy",
"Fantasy Sci-Fi",
"Children's Fiction",
"Children's Fantasy"))genres %>%
ggplot(aes(Genre, Books)) +
geom_col()
Infelizmente, meus novos nomes de gênero são um pouco longos e se sobrepõem, a menos que eu amplie minha trama. Existem algumas maneiras de lidar com isso. Primeiro, eu poderia pedir ao ggplot2 para abreviar os nomes.
genres %>%
ggplot(aes(Genre, Books)) +
geom_col() +
scale_x_discrete(labels = abbreviate)
Essas abreviações foram geradas automaticamente por R, e eu não sou um grande fã. Uma maneira melhor seria adicionar quebras de linha a qualquer gênero de duas palavras. Este post Stack Overflow me deu uma função que eu posso adicionar ao meu scale_x_discrete para fazer exatamente isso.
genres %>%
ggplot(aes(Genre, Books)) +
geom_col() +
scale_x_discrete(labels=function(x){sub("\s", "n", x)})
Muito melhor!
Como você pode ver, a função scale_x usada depende dos tipos de dados com os quais você está trabalhando. Para datas, scale_x_date; para categorias, scale_x_discrete. Amanhã, mostraremos algumas maneiras de formatar dados contínuos, pois geralmente é o que você vê no eixo y. Vejo você então!
By the way, este é o meu 1000 post no meu blog!
Relacionado