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

在R语言中如何绘制非均匀尖峰栅格图?含多试验实现方法

绘制非齐次泊松过程的栅格图(单次+10次试验)

嘿,刚接触R完全不用慌,咱们一步步搞定这个NHPP栅格图的问题~

第一步:先搞定单次试验的栅格图

假设你已经有了单次试验的尖峰时间序列nhpp1(比如像c(0.8, 2.3, 5.1, 7.9, 9.4)这样的数值向量),用base R就能快速画出栅格图:

# 设定时间范围(0到10秒)
time_range <- c(0, 10)

# 绘制单次试验的栅格图
plot(NA, xlim = time_range, ylim = c(0.8, 1.2), 
     xlab = "时间(秒)", ylab = "试验1", main = "单次NHPP尖峰栅格图",
     yaxt = "n") # 隐藏默认y轴刻度
axis(2, at = 1, labels = "试验1") # 手动添加对应试验的y轴标签

# 给每个尖峰画竖线(也可以用points画点,看你偏好)
for(t in nhpp1){
  abline(v = t, col = "black", lwd = 2)
}

如果你更喜欢用ggplot2(语法更直观,后期扩展也方便),代码是这样的:

library(ggplot2)

# 把时间序列转换成数据框,适配ggplot的输入格式
df_single <- data.frame(time = nhpp1, trial = 1)

ggplot(df_single, aes(x = time, y = trial)) +
  geom_vline(aes(xintercept = time), color = "black", linewidth = 1) +
  xlim(time_range) +
  ylim(0.8, 1.2) +
  labs(x = "时间(秒)", y = "试验编号", title = "单次NHPP尖峰栅格图") +
  theme(axis.text.y = element_text(angle = 0, vjust = 0.5))

第二步:扩展到10次试验

首先,咱们先把10次试验的尖峰序列整理好(如果你已经有现成数据,直接跳过生成步骤,把数据放进列表就行)。假设你用自己的NHPP生成函数generate_nhpp(),可以这样批量生成:

# 生成10次试验的NHPP尖峰序列,存到列表里
set.seed(123) # 设置随机种子,保证结果可重复
nhpp_list <- lapply(1:10, function(i) generate_nhpp())

接下来把列表数据转换成适合画图的长格式数据框:

# 合并所有试验数据,生成包含「时间」「试验编号」的数据集
df_all <- do.call(rbind, lapply(1:10, function(trial_num){
  data.frame(time = nhpp_list[[trial_num]], trial = trial_num)
}))

用base R画10次试验的栅格图:

plot(NA, xlim = time_range, ylim = c(0.5, 10.5), 
     xlab = "时间(秒)", ylab = "试验编号", main = "10次NHPP尖峰栅格图",
     yaxt = "n")
axis(2, at = 1:10, labels = 1:10) # 显示1-10的试验编号

# 循环给每个试验画尖峰竖线
for(trial in 1:10){
  times <- nhpp_list[[trial]]
  for(t in times){
    abline(v = t, col = "gray50", lwd = 1)
  }
  # 换成点表示尖峰的话,用这行代码替代上面的循环:
  # points(x = times, y = rep(trial, length(times)), pch = 16, cex = 0.8)
}

用ggplot2画会更简洁美观:

ggplot(df_all, aes(x = time, y = trial)) +
  geom_point(pch = 16, color = "darkblue", size = 1.5) + # 用点表示尖峰
  # 换成竖线的话,用这行替代:geom_vline(aes(xintercept = time), color = "gray50", linewidth = 0.8)
  xlim(time_range) +
  ylim(0.5, 10.5) +
  labs(x = "时间(秒)", y = "试验编号", title = "10次NHPP尖峰栅格图") +
  theme_bw() + # 用简洁的黑白主题
  theme(axis.text.y = element_text(size = 10))

小提示

  • 如果想让不同试验的尖峰用不同颜色区分,可以在ggplot2的aes里加color = factor(trial),再用scale_color_discrete()调整配色。
  • 尖峰数量多的时候,用点会比竖线更清晰;尖峰少的话,竖线能更直观体现时间点位置。

内容的提问来源于stack exchange,提问作者14thTimeLord

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:25:48