X é para scale_x | R-bloggers

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[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.

## -- Attaching packages ------------------------------------------- tidyverse 1.3.0 --
##  ggplot2 3.2.1      purrr   0.3.3
## tibble 2.1.3 dplyr 0.8.3
## tidyr 1.0.0 stringr 1.4.0
## readr 1.3.1 forcats 0.4.0
## -- Conflicts ---------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
reads2019  read_csv("~/Downloads/Blogging A to Z/SaraReads2019_allchanges.csv",
col_names = TRUE)
## Parsed with column specification:
## cols(
## Title = col_character(),
## Pages = col_double(),
## date_started = col_character(),
## date_read = col_character(),
## Book.ID = col_double(),
## Author = col_character(),
## AdditionalAuthors = col_character(),
## AverageRating = col_double(),
## OriginalPublicationYear = col_double(),
## read_time = col_double(),
## MyRating = col_double(),
## Gender = col_double(),
## Fiction = col_double(),
## Childrens = col_double(),
## Fantasy = col_double(),
## SciFi = col_double(),
## Mystery = col_double(),
## SelfHelp = col_double()
## )
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.

reads2019 %>%
ggplot(aes(date_read, PagesRead)) +
geom_point()
Leia Também  Modelagem de tópicos Biterm para textos curtos

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.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
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!

Leia Também  Making Of: Uma API grátis para dados COVID-19

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!



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: o email, Twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br