R语言ggHoriPlot包绘制地平线图

数据和代码获取:请查看主页个人信息!!!

关键词“地平线图”

1. 数据读取与处理

首先,从TSV文件中读取数据,并进行数据清洗和处理。

rm(list=ls())
pacman::p_load(tidyverse,ggalt,ggHoriPlot,hrbrthemes)
​
sports <- read_tsv("activity.tsv")

2. 数据清洗

sports <- sports %>%
  group_by(activity) %>% 
  filter(max(p) > 3e-04, 
         !grepl('n\\.e\\.c', activity)) %>% 
  arrange(time) %>%
  mutate(p_peak = p / max(p), 
         p_smooth = (lag(p_peak) + p_peak + lead(p_peak)) / 3,
         p_smooth = coalesce(p_smooth, p_peak)) %>% 
  ungroup() %>%
  do({ 
    rbind(.,
          filter(., time == 0) %>%
            mutate(time = 24*60))
  }) %>%
  mutate(time = ifelse(time < 3 * 60, time + 24 * 60, time)) %>%
  mutate(activity = reorder(activity, p_peak, FUN=which.max)) %>% 
  arrange(activity) %>%
  mutate(activity.f = reorder(as.character(activity), desc(activity)))
​
sports <- mutate(sports, time2 = time/60)

3. 绘制初步图表

根据处理后的数据生成初步图表,展示不同体育活动在一天中的分布情况。

ggplot(sports, aes(time2, p_smooth)) +
  geom_horizon(bandwidth=0.1) +
  facet_grid(activity.f~.) +
  scale_x_continuous(expand=c(0,0), breaks=seq(from = 3, to = 27, by = 3), labels = function(x) {sprintf("%02d:00", as.integer(x %% 24))}) +
  viridis::scale_fill_viridis(name = "Activity relative to peak", discrete=TRUE,
                              labels=scales::percent(seq(0, 1, 0.1)+0.1))

4. 美化图表

进一步美化图表,使其更具吸引力和可读性。

ggplot(sports, aes(time2, p_smooth)) +
  geom_horizon(bandwidth=0.1) +
  facet_grid(activity.f~.) +
  scale_x_continuous(expand=c(0,0), breaks=seq(from = 3, to = 27, by = 3), labels = function(x) {sprintf("%02d:00", as.integer(x %% 24))}) +
  viridis::scale_fill_viridis(name = "Activity relative to peak", discrete=TRUE,
                              labels=scales::percent(seq(0, 1, 0.1)+0.1)) +
  theme_ipsum_rc(grid="") +
  theme(panel.spacing.y=unit(-0.05, "lines"),
        strip.text.y = element_text(hjust=0, angle=360),
        axis.text.y=element_blank(),
        axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))
​
ggsave('pic.png', bg = 'white', width = 8, height = 6)

5. 可视化结果

这张图表展示了不同体育活动在一天中的高峰时段。颜色深浅代表了活动强度的相对峰值。通过这张图表,我们可以清晰地看到各项活动在一天中不同时间段的分布情况。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 21:34:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 21:34:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 21:34:04       87 阅读
  4. Python语言-面向对象

    2024-06-16 21:34:04       96 阅读

热门阅读

  1. 常见的中间件都在解决什么问题?

    2024-06-16 21:34:04       30 阅读
  2. 大数据数仓30问

    2024-06-16 21:34:04       28 阅读
  3. rsync常用命令

    2024-06-16 21:34:04       26 阅读
  4. vue2 + echats macarons 选中样式的树状图

    2024-06-16 21:34:04       31 阅读
  5. 高效时间管理

    2024-06-16 21:34:04       33 阅读
  6. Leetcode 3. 无重复字符的最长子串

    2024-06-16 21:34:04       38 阅读
  7. C# —— while循环语句

    2024-06-16 21:34:04       32 阅读
  8. c++ 笔记二

    2024-06-16 21:34:04       31 阅读
  9. 什么是贸易顺差和贸易逆差?

    2024-06-16 21:34:04       24 阅读