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

寻求可展示带读数权重时间点的R模拟时钟工具方案

R 实现方案

如果ggclock不好用,直接用ggplot2手动绘制模拟时钟,完全满足你的需求:支持24小时单图,指针粗细随重合计数变化。

步骤1:数据预处理与聚合

先把时间点按时间分组,统计每个时间的重合次数:

library(ggplot2)
library(ggforce) # 用于画圆形外框

# 示例数据集(替换成你的数据)
df <- data.frame(
  time = c("09:00", "11:00", "09:00", "09:00", "11:00", "23:30", "14:15", "09:00"),
  id = 1:8 # 每条记录对应一个读数
)

# 聚合:统计每个时间点的读数数量
df_agg <- aggregate(id ~ time, df, length)
colnames(df_agg)[2] <- "count" # 重命名为count

# 将时间转换为总分钟数,方便计算角度
df_agg$total_min <- as.numeric(strptime(df_agg$time, "%H:%M") - strptime("00:00", "%H:%M")) / 60

步骤2:计算指针角度与坐标

24小时制下,每分钟对应0.25度(360度/1440分钟),从12点位置(-90度)开始计算:

# 计算角度(转换为弧度)
df_agg$radian <- (df_agg$total_min * 0.25 - 90) * pi / 180

# 固定指针长度,仅调整粗细
pointer_length <- 0.8
df_agg$x_end <- pointer_length * cos(df_agg$radian)
df_agg$y_end <- pointer_length * sin(df_agg$radian)

步骤3:绘制24小时模拟时钟

ggplot(df_agg, aes(x = 0, y = 0, xend = x_end, yend = y_end)) +
  # 绘制时钟外框
  geom_circle(aes(x0 = 0, y0 = 0, r = 1), color = "black", size = 1, inherit.aes = FALSE) +
  # 绘制24小时刻度线
  geom_segment(data = data.frame(angle = seq(0, 337.5, 15)),
               aes(x = 0.9 * cos(angle * pi / 180), y = 0.9 * sin(angle * pi / 180),
                   xend = cos(angle * pi / 180), yend = sin(angle * pi / 180)),
               color = "black", inherit.aes = FALSE) +
  # 添加小时标签
  geom_text(data = data.frame(angle = seq(0, 337.5, 15), hour = 1:24),
            aes(x = 0.75 * cos(angle * pi / 180), y = 0.75 * sin(angle * pi / 180),
                label = hour), inherit.aes = FALSE, size = 4) +
  # 绘制指针:粗细由count决定
  geom_segment(size = df_agg$count, color = "darkred", lineend = "round") +
  # 时钟中心圆点
  geom_point(aes(x = 0, y = 0), size = 5, color = "black") +
  # 正方形坐标系,去除冗余元素
  coord_fixed() +
  theme_void()

如果需要12小时制,只需修改角度计算为:

df_agg$radian <- ((df_agg$total_min %% 720) * 0.5 - 90) * pi / 180

然后拆分上午(hour <12)和下午(hour >=12)数据分别绘图即可。


Excel 实现方案

不用插件,用Excel的散点图+形状就能实现:

步骤1:数据整理

假设你的数据在A列(时间点),先添加辅助列:

  • B列:=COUNTIF(A:A,A2)(统计每个时间点的重合次数,批量填充后去重保留唯一时间点)
  • C列:=HOUR(A2)(提取小时)
  • D列:=MINUTE(A2)(提取分钟)
  • E列:=C2*60+D2(总分钟数)
  • F列:=RADIANS(E2*0.25-90)(24小时制弧度)
  • G列:=0.8*COS(F2)(指针终点X坐标,0.8为固定长度)
  • H列:=0.8*SIN(F2)(指针终点Y坐标)
  • I列/J列:全部填0(时钟中心坐标)

步骤2:绘制指针

  1. 选中I列(中心X)、J列(中心Y)、G列(指针X)、H列(指针Y),插入带直线和标记的散点图。
  2. 选中图表中的线条,右键选择「设置数据系列格式」,在「线条」选项中,点击「宽度」旁边的小图标,选择对应B列的计数数值,实现粗细随计数变化。

步骤3:完善时钟外观

  1. 插入圆形形状,调整大小与散点图对齐,设置无填充、黑色边框,放在图表底层作为时钟外框。
  2. 插入短线条作为刻度,手动对齐到对应小时位置;添加文本框输入1-24的小时数,调整位置到刻度内侧。

如果需要12小时制,修改F列公式为=RADIANS((E2%%720)*0.5-90),然后拆分上午/下午数据分别作图。


内容的提问来源于stack exchange,提问作者Syed Zuko134 Masroor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:07:04