前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2优雅的绘制发光点图

ggplot2优雅的绘制发光点图

作者头像
R语言数据分析指南
发布2023-09-11 08:53:37
2330
发布2023-09-11 08:53:37
举报
文章被收录于专栏:R语言数据分析指南

❝本节来介绍如何使用「ggplot2结合ggfx」来绘制发光点图,下面小编通过一个案例来进行展示,图形仅供展示用,希望各位观众老爷能够喜欢。❞

加载R包

代码语言:javascript
复制
library(tidyverse)
library(janitor)
library(ggtext)
library(ggforce)
library(ggfx)

导入数据

代码语言:javascript
复制
df <- read_tsv("data.tsv")

定义调色板

代码语言:javascript
复制
pal <- c('#ecbf3d', '#f0cc46', '#f5e355', '#fdf56d', '#fdffbe', '#ffffff')

数据清洗

代码语言:javascript
复制
cities <- c("Paris", "Berlin", "London", "Sydney", "New York")

df_time <- df %>% 
  group_by(zone) %>%  # 按时区分组
  slice_max(end) %>%  # 选择每组的最大值
  mutate(city = str_replace(str_extract(zone, "(?<=/)[^/]*$"), "_", " ")) %>%  # 提取并替换城市名
  filter(city %in% cities) %>%  # 过滤出指定城市
  mutate(
    city = factor(city, levels = rev(cities)),  # 将城市转换为因子变量
    lab = paste0(city, "."),  # 创建标签
    offset = offset/3600,  # 转换时区偏移量
    offset_lab = ifelse(offset < 0, as.character(offset), paste0("+", offset))  # 创建时区标签
  ) %>% 
  ungroup()  # 取消分组

构建圆形数据框

代码语言:javascript
复制
df_circle <- map_dfr(cities, ~{
  tibble(x = 0,y = 0,
    r = seq(1, 0.75, length = 10),
    col = colorRampPalette(pal)(10),
    city = .x)
}) %>% 
  mutate(city = factor(city, levels = rev(cities))) %>%  # 将城市转换为因子变量
  left_join(df_time %>% select(city, offset),by = "city") %>%  # 左连接
  mutate(y = as.numeric(city))  # 转换城市为数值型

数据可视化

代码语言:javascript
复制
df_time %>% ggplot() +
  geom_text(aes(0, city, label = lab),size =5, colour = ifelse(df_time$dst,"#ecbf3d", "white"),
            hjust = 0, fontface = "bold") +  # 添加城市标签
  geom_text(aes(3.8, city, label = offset_lab), colour = "white", size = 4, fontface = "bold") +  # 添加时区标签
  geom_segment(aes(x=4, xend = 8, y = city, yend = city), colour = "white") +  # 添加线段
  with_inner_glow(
    geom_circle(aes(x0 = offset/6+6, y0 = y, r = r/2, fill = col, group = city), df_circle, colour = NA),
    colour = "grey20", expand = 2, sigma = 5) +  # 添加带内部发光的圆形
  scale_fill_identity() +  # 使用原始填充色
  coord_fixed() +  # 固定坐标轴
  theme_void() +  # 使用空白主题
  theme(plot.background = element_rect(fill ="grey20", colour = "grey20"),  # 设置背景色
    plot.margin = margin(b = 2, t = 5, r = 5, l = 5))  # 设置边距
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ❝本节来介绍如何使用「ggplot2结合ggfx」来绘制发光点图,下面小编通过一个案例来进行展示,图形仅供展示用,希望各位观众老爷能够喜欢。❞
  • 加载R包
  • 导入数据
  • 定义调色板
  • 数据清洗
  • 构建圆形数据框
  • 数据可视化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档