大数跨境
0
0

ggplot2优雅绘制进阶版配对点图

ggplot2优雅绘制进阶版配对点图 R语言数据分析指南
2023-04-04
0

欢迎关注R语言数据分析指南

本节再来介绍一个如何使用「ggplot2绘制进阶版的配对点图」,代码部分小编做了详细的注释,「数据+代码已经上传2023VIP群,加群的观众老爷请自行下载」 加入会员解锁更多精彩内容

有需要学习个性化数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」购买「2023年度会员」 初始价格99元,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码;按照往年数据小编年产出约在150+以上

购买后微信发小编订单截图即邀请进新的会员交流群,小编的文档为按年售卖,只包含当年度的「除系列课程外」的文档,有需要往年文档的朋友也可下单购买,需要了解更多信息的朋友欢迎交流咨询,「添加小编微信请备注,以提高沟通效率」

载入所需的包

library(tidyverse)
library(ggtext)
library(glue)

读入数据文件

df <- read_tsv("data.xls")

设定需要突出显示的国家

country <- c("Canada""Germany",
             "Indonesia""Australia ""United Kingdom",
             "Brazil""Greece","Singapore""Myanmar")

数据清洗

data <- df %>% 
  # 选择1995年和最新年份的数据
  filter(Year == 1995 | Year == max(Year)) %>% 
  # 对同一国家的多年数据进行筛选,确保只有两条数据
  group_by(Entity) %>% 
  filter(n() == 2) %>% 
  # 找出每个国家最大的值出现在哪一年,并确定趋势(增加或减少)
  mutate(max_value_year = which.max(Hours),
         trend = ifelse(max_value_year == 1"decrease""increase")) %>% 
  ungroup() %>% 
  # 根据需要突出显示的国家和同一国家两年数据的趋势,给每个国家打上标签
  mutate(highlight = case_when(
    !(Entity %in% country) ~  "other",
    Entity %in% c("Myanmar""Singapore") ~ "same",
    TRUE ~ trend))

这行代码在 mutate() 函数中创建了一个新变量 highlight,它根据不同的条件赋予不同的值。
根据不同的条件,highlight 可以取以下三个值之一:
"other" 表示这个国家不需要突出显示。
"same" 表示这个国家虽然需要突出显示,但是在最近的一年与 1995 年的工作时长数据没有变化。
"increase" 或 "decrease" 表示这个国家需要突出显示,并且在最近的一年与 1995 年的工作时长数据有所增加或减少。

数据可视化

data %>% ggplot(aes(factor(Year), Hours, group = Entity, color = highlight)) +
  geom_line(aes(size = ifelse(highlight == "other"0.10.7))) +   # 画出线图
  geom_point() +   # 画出散点图
  # 添加标签,使用ggrepel包来避免标签重叠
  ggrepel::geom_text_repel(data = . %>% filter(highlight != "other"),
    aes(x = ifelse(Year == min(Year), 1 - 0.52 + 0.5),
      label = glue::glue("{Entity} ({scales::number(Hours, accuracy = 1)})"),
      hjust = ifelse(Year == min(Year),1,0)), 
    size = 2.5, nudge_x =0, direction = "y",segment.size = 0) +
  scale_x_discrete(position = "top") +   # 调整x轴的位置和大小
  scale_size_identity() +
  coord_cartesian(clip = "off") +  
  # 设定颜色
  scale_color_manual(values = c("other" = "grey"
      "decrease" = "#205FA7""increase" = "#E9972A"
      "same" = colorspace::darken("#46732EFF"))) +
  guides(col = "none") +   # 不显示颜色标尺
  # 设定主题
  theme_minimal(base_size = 8) +
  theme (
    plot.background = element_rect(color = NA, fill = "white"),
    panel.grid = element_blank(),
    panel.grid.major.x = element_line(color = "#ECEEF2", size = 6),
    axis.title = element_blank(),
    axis.text.x = element_text(size = 12, face = "bold", color = "grey38"),
    axis.text.y = element_blank(),
    plot.margin = margin(t = 6, l = 16, r = 16, b = 4))

小编微信

关注下方公众号下回更新不迷路

往期精彩内容


[会员专享]ggraph轻松绘制网络图


ggplot2优雅绘制轨迹趋势散点


[会员专享]ggplot2构建图层注释拟合曲线


[会员专享] ggplot2绘制局部放大柱状图


nature microbiology图表复现之简洁版热图


[会员专享] ggplot2绘制个性化注释哑铃图


reactablefmtr包绘制高端交互式表格


[会员专享] nature communications图表复现之个性化地图绘制


[会员专享] R优雅绘制组合版circos图


[会员专享] nature biotechnology图表复现高端个性化组合图


【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读531
粉丝0
内容1.2k