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  Reamostragem de bootstrap com dados de produção de cerveja #TidyTuesday[0][Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon Rstats em Julia Silge, 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.Venho publicando screencasts demonstrando como usar a estrutura tidymodels, desde as primeiras etapas da modelagem até como ajustar modelos mais complexos. Hoje, estou usando esta semana #TidyTuesday conjunto de dados na produção de cerveja para mostrar como usar a reamostragem de autoinicialização para estimar os parâmetros do modelo. Aqui está o código que usei no vídeo, para quem prefere ler em vez de ou além do vídeo.Explore os dadosNosso objetivo de modelagem aqui é estimar quanto açúcar produtores de cerveja usam em relação a malte de acordo com o conjunto de dados #TidyTuesday. Usaremos a reamostragem de autoinicialização para fazer isso! Primeiro, vamos analisar os dados sobre os materiais de fermentação.library(tidyverse)brewing_materials_raw % count(type, wt = month_current, sort = TRUE)## # A tibble: 12 x 2## type n## ## 1 Total Used 53559516695## 2 Total Grain products 44734903124## 3 Malt and malt products 32697313882## 4 Total Non-Grain products 8824613571## 5 Sugar and syrups 6653104081## 6 Rice and rice products 5685742541## 7 Corn and corn products 5207759409## 8 Hops (dry) 1138840132## 9 Other 998968470## 10 Barley and barley products 941444745## 11 Wheat and wheat products 202642547## 12 Hops (used as extracts) 33700888Como alguns materiais diferentes de fabricação de cerveja mudaram ao longo do tempo?brewing_filtered % filter( type %in% c( "Malt and malt products", "Sugar and syrups", "Hops (dry)" ), year % mutate( date = paste0(year, "-", month, "-01"), date = lubridate::ymd(date) )brewing_filtered %>% ggplot(aes(date, month_current, color = type)) + geom_point()Existem fortes padrões anuais nesses materiais. Queremos medir quanto os produtores de cerveja com açúcar usam em relação ao malte.brewing_materials % select(date, type, month_current) %>% pivot_wider( names_from = type, values_from = month_current ) %>% janitor::clean_names()brewing_materials## # A tibble: 94 x 4## date malt_and_malt_products sugar_and_syrups hops_dry## ## 1 2008-01-01 374165152 78358212 4506546## 2 2008-02-01 355687578 80188744 1815271## 3 2008-03-01 399855819 78907213 6067167## 4 2008-04-01 388639443 81199989 6864440## 5 2008-05-01 411307544 89946309 7470130## 6 2008-06-01 415161326 81012422 7361941## 7 2008-07-01 405393784 76728131 1759452## 8 2008-08-01 389391266 83928121 5992025## 9 2008-09-01 362587470 71982604 3788942## 10 2008-10-01 353803777 42828943 3788949## # … with 84 more rowsbrewing_materials %>% ggplot(aes(malt_and_malt_products, sugar_and_syrups)) + geom_smooth(method = "lm") + geom_point()Há muita variação nesse relacionamento, mas os reprodutores de cerveja usam mais açúcar quando usam mais malte. Qual é a relação?library(tidymodels)beer_fit |t|) ## malt_and_malt_products 0.205804 0.003446 59.72

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  Resenha: Série Temporal Introdutória com R

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