Оваа недела се посветивме повеќе кон начинот на пишување ggplot2
код, имено, дали сите естетики се подесуваат со еден повик до aes
или секоја посебно. Слично пракса може да се примени и за други ggplot2
фунцкии коишто доколку ги повикаме повторно не се во конфликт со претходниот код. Такви се на пример labs
или theme
(примери подолу). Слично може да се примени и со dplyr::filter
, каде што често, но не секогаш, може да филтрираме податоци со синтаксата filter(x="x", y="y")
или filter(x="a") %>% filter(y="b")
. Ова е интересно од аспект на читливоста на кодот и иако бара повеќе пишување, долгата форма (со посебен aes
за секоја естетика) можеби е подостапна за нови корисници.
Други новини во овој документ се однесуваат на стилизирање на ggplot2
графици, со основни функции или додатни пакети (ggridges
).
.Rmd
(R Markdown
) е околината во која ќе работимеR Notebook
: Мени: File -> New File -> R notebook
ctrl+alt+i
)%>%
(ctrl+shift+m
)<-
(alt+-
)view()
This is how I explain the ‘pipe’ to #rstats newbies… pic.twitter.com/VdAFTLzijy
— We are R-Ladies (@WeAreRLadies) September 13, 2019
TidyTuesday 38: податоци од националните паркови во САД
The @R4DScommunity welcomes you to week 38 of #TidyTuesday! We're exploring National Park Visits!!
— Thomas Mock 👨🏼 💻 (@thomas_mock) September 16, 2019
📁 https://t.co/sElb4fcv3u
🗞 https://t.co/uKMrTmKokT#r4ds #tidyverse #rstats #dataviz pic.twitter.com/92S7a7mzuj
ggplot(my_data,
aes(var1, y = var2, col = var3)) +
geom_point() +
ggtitle("My Title") +
labs(x = "the x label",
y = "the y label",
col = "legend title")
(извор:EvaMaeRey)
ggplot(data = my_data) +
aes(x = var1) +
labs(x = "the x label") +
aes(y = var2) +
labs(y = "the y label") +
geom_point() +
aes(col = var3) +
labs(col = "legend title") +
labs(title = "My title")
library(tidyverse)
library(dplyr)
park_visits <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-09-17/national_parks.csv")
glimpse(park_visits)
## Rows: 21,560
## Columns: 12
## $ year <chr> "1904", "1941", "1961", "1935", "1982", "1919", "...
## $ gnis_id <chr> "1163670", "1531834", "2055170", "1530459", "2772...
## $ geometry <chr> "POLYGON", "MULTIPOLYGON", "MULTIPOLYGON", "MULTI...
## $ metadata <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N...
## $ number_of_records <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
## $ parkname <chr> "Crater Lake", "Lake Roosevelt", "Lewis and Clark...
## $ region <chr> "PW", "PW", "PW", "PW", "PW", "NE", "IM", "NE", "...
## $ state <chr> "OR", "WA", "WA", "WA", "CA", "ME", "TX", "MD", "...
## $ unit_code <chr> "CRLA", "LARO", "LEWI", "OLYM", "SAMO", "ACAD", "...
## $ unit_name <chr> "Crater Lake National Park", "Lake Roosevelt Nati...
## $ unit_type <chr> "National Park", "National Recreation Area", "Nat...
## $ visitors <dbl> 1500, 0, 69000, 2200, 468144, 64000, 448000, 7387...
pv_grouped <- park_visits %>%
filter(unit_type == "National Park") %>%
filter(!year == "Total") %>%
group_by(year) %>%
summarise_at(.vars = vars("visitors"),
.funs = list("visitors_per_year"=sum)) %>%
mutate(year = as.numeric(year))
pv_grouped
Графички, горната табела може да ја прикажеме на следниот начин:
ggplot(data = pv_grouped) +
aes(x = year) +
aes(y = visitors_per_year / 10^6) +
geom_line(color = "forestgreen") +
geom_area(alpha = .3, fill = "forestgreen") +
scale_y_continuous(labels = scales::unit_format(unit = "M")) +
scale_x_continuous(breaks = seq(1910, 2016, 10),
labels = c(1910, paste("'", seq(20, 90, 10), sep = ""), 2000, "'10")) +
labs(x="") +
labs(y="") +
labs(title="U.S. national parks have never been so popular") +
labs(subtitle="Annial recreational visits to national parks since 1904") +
labs(caption="Source: National Parks Service") +
ggthemes::theme_fivethirtyeight()
top10 <- park_visits %>%
filter(year == "Total") %>%
arrange(desc(visitors)) %>%
top_n(n = 10, wt=visitors)
pv2 <- park_visits %>%
filter(!year == "Total") %>%
select(year, unit_name, visitors) %>%
group_by(year) %>%
mutate(year_rank = rank(-visitors)) %>%
ungroup %>%
mutate(year = as.numeric(year)) %>%
arrange(year, year_rank)
pv2_top10 <- filter(.data = pv2, unit_name %in% top10$unit_name)
pv2_top10
И графички
library(ggridges)
ord <- top10$unit_name[order(top10$visitors, decreasing = FALSE)]
lbl <- str_remove(ord, "National Park")
ggplot(data = pv2_top10) +
aes(x = year) +
aes(y = unit_name) +
aes(fill = unit_name) +
aes(group = unit_name) +
aes(height = visitors) +
aes(scale = .0000001) +
ggridges::geom_ridgeline(alpha = .5) +
theme_ridges() +
labs(y = "") +
labs(x = "") +
labs(title = "National park visitors per year") +
labs(subtitle = "The twenty most-visited parks overall") +
# theme(axis.text.y = element_text(size = 14)) +
scale_y_discrete(limits = ord, labels = lbl) +
scale_fill_cyclical(limits = ord, values = c("dodgerblue", "forestgreen")) +
scale_x_continuous(
limits = c(1950, 2016),
breaks = seq(1950, 2016, 10),
labels = c("1950", "'60", "'70", "'80", "'90", "2000", "'10")
) +
ggthemes::theme_fivethirtyeight()