【问题标题】:Geom line plotting with gradient intensity based peak concentrations使用基于梯度强度的峰浓度绘制几何线图
【发布时间】:2015-06-16 23:42:32
【问题描述】:

我有一些“心跳”数据——以安培为单位——(比如说)在一段时间(秒)内跳动。以下是几行:

 time                    amps
 5.32632    0.0291289784
   5.334    0.0271881307
 5.33424    0.0463933055
 5.33624    0.0149292168
 5.33888    0.0668341603
 5.33924    0.0384420334
  5.3402    0.028831443
 5.34036    0.0386542207
 5.34052    0.0146365606
 5.34136    0.0374055127
  5.3414    0.0544995649
 5.34168    0.0342488711
 5.34184    0.0197212594
 5.34212    0.2039598122
 5.34232    0.0565000587
 5.34236    0.0332496556
 5.34256    0.0346007892
  5.3426    0.0325735156
   5.343    0.0317928565
  5.34316   0.034084553
  5.3438    0.0875207643
 5.34436    0.0356283179
 5.34452    0.0306993392
 5.34456    0.0288807644
  5.3448    0.0165046742
 5.34504    0.0282299051
  5.3452    0.0533351795
  5.3458    0.05287876
   5.346    0.1192851075
   5.346    0.0318748452
 5.34648    0.022514099
  5.34652   0.0295305232

这些心跳会在一定的频率和不同的强度达到峰值,然后是休息片刻。我正在附上一个我用 ggplot 制作的图,它显示了所有数据。

我的问题:我想根据峰簇制作颜色渐变(在 ggplot 中可视化)。因此,聚集在一起的峰越多,它们在图中出现的颜色就越深。较少簇的区域看起来更亮。还有一个带有这个渐变的右上角/左上角的键会很好。

我使用 geom_line 制作了下面的图,这是我的代码:

beats <- read.csv("beat_intesity.csv")
p <- ggplot(beats, aes(x=time, y=amps))
p + geom_line()

您可以看到某些地区的峰比其他地区多。我不确定这是否是一个非常容易的问题。提前谢谢你。

【问题讨论】:

标签: r plot ggplot2 cluster-analysis


【解决方案1】:

我能想到的最简单的强度测量方法是运行平均值:

ma <- function(x, n=5){as.numeric(filter(x, rep(1, n), sides=2))}

取一个合理的阈值,比如0.1

beats$peaks <- ma(beats$amps > 0.1)

将结果变量映射到颜色。

ggplot(beats, aes(x=time, y=amps, color=peaks)) + geom_line()

使用scale_colour_gradient 来选择所需的调色板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    相关资源
    最近更新 更多