ggplot2优雅的绘制坡度图
2021-08-14 本文已影响0人
R语言数据分析指南
之前有小伙伴提问坡度图如何绘制,本节就来介绍如何通过ggplot2绘制坡度图
加载R包
library(tidyverse)
library(lubridate)
library(ggtext)
library(PNWColors)
加载数据
big_mac <- read_csv("big-mac.csv")
数据清洗
plot_data <-
big_mac %>%
filter(date %in% c(ymd("2010-07-01"), ymd("2020-07-01"))) %>%
select(name, date, usd_raw) %>%
add_count(name) %>%
filter(n > 1) %>%
arrange(name) %>%
group_by(name) %>%
mutate(change = usd_raw - lag(usd_raw)) %>%
tidyr::fill(change, .direction = "up") %>%
arrange(change)
plot_data_5 <-
filter(plot_data, change < -0.55) %>%
mutate(label = glue::glue("{name} [{round(usd_raw*100)}%]"))
ggplot2数据可视化
ggplot(plot_data, aes(date, usd_raw, group = name, color = name)) +
geom_line(color = "grey85") +
geom_point(color = "grey50", size = 1) +
geom_line(data = plot_data_5, size = 1.05) +
geom_point(data = plot_data_5, size = 1.5) +
geom_point(data = plot_data_5, size = 3.5, shape = 1) +
ggrepel::geom_text_repel(
data = filter(plot_data_5, date == ymd("2010-07-01")),
aes(label = label),
hjust = 1.1) +
ggrepel::geom_text_repel(
data = filter(plot_data_5, date == ymd("2020-07-01")),
aes(label = label),
hjust = -0.10) +
annotate("text", x = ymd("2010-07-01"),
y = -0.75, label = "2010",
fontface = "bold", size = 8) +
annotate("text", x = ymd("2020-07-01"),
y = -0.75, label = "2020",
fontface = "bold", size = 8) +
scale_x_date(limits = c(ymd("2008-07-01"), ymd("2022-07-01"))) +
scale_color_manual(values = pnw_palette("Bay",n=5)) +
theme_void() +
theme(plot.margin=margin(10,30,10,30),
plot.title.position="plot",
plot.title=element_markdown(family="futura",
face="bold",size = 22,
color="#ffd700",margin=margin(b=10)),
plot.subtitle=element_markdown(size=11,margin=margin(b = 10)),
plot.caption=element_markdown(size=9,color="grey40"),
legend.position="none")
喜欢的小伙伴欢迎关注我的公众号
R语言数据分析指南,持续分享数据可视化的经典案例及一些生信知识,希望对大家有所帮助