You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R和ggplot绘制Zoom会议全程在线参会人数变化图

Zoom会议同时在线人数可视化实现方案

完全可以基于你现有的join.time、leave.time数据实现需求,以下是具体操作逻辑和代码:

核心思路

每个用户的入会动作会使在线人数+1,退会动作会使在线人数-1,把所有动作按时间排序后计算累计值,就能得到任意时间点的同时在线人数。你可以选择两种统计方式:

  • 事件触发式:精确对应用户入会退会的时间点,人数变化为阶梯状
  • 时间切片式:按固定时间间隔(如1分钟、5分钟)统计区间内的端点在线人数,曲线更平滑,适合长会议场景

具体实现代码

1. 加载依赖包

# 用到tidyverse做数据处理,ggplot2做可视化,lubridate处理时间格式
library(tidyverse)
library(lubridate)

2. 数据处理(事件触发式)

# 构造事件表:区分入会/退会事件,标记人数变化值
event_df <- DF %>%
  select(join.time, leave.time) %>%
  pivot_longer(cols = everything(), 
               names_to = "event_type", 
               values_to = "time") %>%
  mutate(count = ifelse(event_type == "join.time", 1, -1)) %>%
  # 按时间排序后计算累计在线人数
  arrange(time) %>%
  mutate(online_num = cumsum(count))

3. 数据处理(时间切片式,更常用)

# 生成覆盖会议全程的时间序列,可自定义间隔为"5 min"、"10 min"等
time_seq <- seq(from = min(DF$join.time), to = max(DF$leave.time), by = "1 min")

# 统计每个时间切片点的在线人数
online_stat <- tibble(time = time_seq) %>%
  rowwise() %>%
  mutate(online_num = sum(DF$join.time <= time & DF$leave.time >= time))

4. 绘制可视化图表

以时间切片式的统计结果为例,绘制带填充的折线图:

ggplot(online_stat, aes(x = time, y = online_num)) +
  # 折线层
  geom_line(color = "#1f77b4", linewidth = 1.2) +
  # 面积填充层,可根据需要删除
  geom_area(fill = "#aec7e8", alpha = 0.5) +
  # 坐标轴和标题配置
  labs(
    x = "会议时间",
    y = "同时在线人数",
    title = "Zoom会议实时在线人数趋势"
  ) +
  # 时间轴格式化,按1小时展示刻度
  scale_x_datetime(date_labels = "%H:%M", date_breaks = "1 hour") +
  theme_bw()

如果想要直方图样式,把geom_line替换为geom_col即可。

内容的提问来源于stack exchange,提问作者Signe Hagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:24:04