• R语言ggHoriPlot包绘制地平线图


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

    关键词“地平线图”

    1. 数据读取与处理

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

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

    2. 数据清洗

    1. sports <- sports %>%
    2. group_by(activity) %>%
    3. filter(max(p) > 3e-04,
    4.         !grepl('n\\.e\\.c', activity)) %>%
    5. arrange(time) %>%
    6. mutate(p_peak = p / max(p),
    7.         p_smooth = (lag(p_peak) + p_peak + lead(p_peak)) / 3,
    8.         p_smooth = coalesce(p_smooth, p_peak)) %>%
    9. ungroup() %>%
    10. do({
    11.   rbind(.,
    12.         filter(., time == 0) %>%
    13.           mutate(time = 24*60))
    14. }) %>%
    15. mutate(time = ifelse(time < 3 * 60, time + 24 * 60, time)) %>%
    16. mutate(activity = reorder(activity, p_peak, FUN=which.max)) %>%
    17. arrange(activity) %>%
    18. mutate(activity.f = reorder(as.character(activity), desc(activity)))
    19. sports <- mutate(sports, time2 = time/60)

    3. 绘制初步图表

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

    1. ggplot(sports, aes(time2, p_smooth)) +
    2. geom_horizon(bandwidth=0.1) +
    3. facet_grid(activity.f~.) +
    4. 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))}) +
    5. viridis::scale_fill_viridis(name = "Activity relative to peak", discrete=TRUE,
    6.                             labels=scales::percent(seq(0, 1, 0.1)+0.1))

    4. 美化图表

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

    1. ggplot(sports, aes(time2, p_smooth)) +
    2. geom_horizon(bandwidth=0.1) +
    3. facet_grid(activity.f~.) +
    4. 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))}) +
    5. viridis::scale_fill_viridis(name = "Activity relative to peak", discrete=TRUE,
    6.                             labels=scales::percent(seq(0, 1, 0.1)+0.1)) +
    7. theme_ipsum_rc(grid="") +
    8. theme(panel.spacing.y=unit(-0.05, "lines"),
    9.       strip.text.y = element_text(hjust=0, angle=360),
    10.       axis.text.y=element_blank(),
    11.       axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))
    12. ggsave('pic.png', bg = 'white', width = 8, height = 6)

    5. 可视化结果

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

  • 相关阅读:
    uniapp 使用第三方UI库 uview-plus
    HTML登录页面
    删除链表中的重复元素
    深度学习21天——准备(环境配置)
    15天深度复习JavaWeb的详细笔记(六)——HTTP、Tomcat、Servlet
    MySQL 清空表 截断表
    「大数据-2.0」安装Hadoop和部署HDFS集群
    方案:基于AI烟火识别与视频技术的秸秆焚烧智能化监控预警方案
    redis学习完整版
    [附源码]java毕业设计高校网上教材征订系统
  • 原文地址:https://blog.csdn.net/a852232394/article/details/139652690