plot

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语言数据分析指南,持续分享数据可视化的经典案例及一些生信知识,希望对大家有所帮助

上一篇 下一篇

猜你喜欢

热点阅读