【问题标题】:Google Vis Timeline aggregationGoogle Vis 时间轴聚合
【发布时间】:2015-08-06 04:37:27
【问题描述】:

如何修改此代码以在时间轴中显示聚合视图?

我不想只为鳄梨提供三个不同的生产线。我想在鳄梨存在时有一条线。最好我什至想要一条完整的数据线,而不是一条完整的鳄梨线、一条完整的草莓线和一条完整的蓝莓线。任何想法都非常感谢。

此外,知道如何正确显示这些时间吗?每两次之间的差异小于一秒,但以年份衡量。

library("googleViz")
dd <- read.csv(header = TRUE, text = "rosbagTimestamp,data
1438293919014802388,avocado
1438293919078955343,avocado
1438293919082352685,avocado
1438293919146142553,0
1438293919177955753,0
1438293919244013175,strawberry
1438293919251252990,strawberry
1438293919322521358,blueberry
1438293919327731275,blueberry")

dd <- within(dd, {
  end <- as.POSIXct(as.numeric(substr(rosbagTimestamp, 1, 10)),
                    origin = '1970-01-01')
  start <- as.POSIXct(as.numeric(substr(rosbagTimestamp, 11, 19)),
                      origin = '1970-01-01')
  rosbagTimestamp <- NULL
})

#         data               start                 end
# 1    avocado 1970-06-21 03:47:12 2015-07-30 18:05:19
# 2    avocado 1972-07-02 16:01:04 2015-07-30 18:05:19
# 3    avocado 1972-08-10 23:44:00 2015-07-30 18:05:19
# 4          0 1974-08-19 07:07:44 2015-07-30 18:05:19
# 5          0 1975-08-22 12:10:40 2015-07-30 18:05:19
# 6 strawberry 1977-09-25 01:24:16 2015-07-30 18:05:19
# 7 strawberry 1977-12-17 19:29:52 2015-07-30 18:05:19
# 8  blueberry 1980-03-21 16:15:44 2015-07-30 18:05:19
# 9  blueberry 1980-05-21 00:26:40 2015-07-30 18:05:19

plot(gvisTimeline(dd, rowlabel = 'data', barlabel = 'data',
                  start = 'start', end = 'end'))

【问题讨论】:

    标签: r google-visualization posixct googlevis timeline.js


    【解决方案1】:

    您只需要除以适当的量级,然后选择您喜欢的聚合工具按组添加时间(如果我理解正确的话)

    library('googleVis')
    dd <- read.csv(header = TRUE, text = "rosbagTimestamp,data
                   1438293919014802388,avocado
                   1438293919078955343,avocado
                   1438293919082352685,avocado
                   1438293919146142553,0
                   1438293919177955753,0
                   1438293919244013175,strawberry
                   1438293919251252990,strawberry
                   1438293919322521358,blueberry
                   1438293919327731275,blueberry")
    
    dd <- within(dd, {
      end <- as.POSIXct(as.numeric(substr(rosbagTimestamp, 1, 10)) / 1e8,
                        origin = '1970-01-01')
      start <- as.POSIXct(as.numeric(substr(rosbagTimestamp, 11, 19)) / 1e8,
                          origin = '1970-01-01')
      rosbagTimestamp <- NULL
    })
    
    ## sum the times by group
    dd1 <- aggregate(. ~ data, data = dd, sum)
    dd1 <- within(dd1, {
      start <- as.POSIXct(start, origin = '1970-01-01')
      end <- as.POSIXct(end, origin = '1970-01-01')
    })
    
    #         data               start                 end
    # 1          0 1969-12-31 19:00:03 1969-12-31 19:00:28
    # 2    avocado 1969-12-31 19:00:01 1969-12-31 19:00:43
    # 3  blueberry 1969-12-31 19:00:06 1969-12-31 19:00:28
    # 4 strawberry 1969-12-31 19:00:04 1969-12-31 19:00:28
    
    plot(gvisTimeline(dd1, rowlabel = 'data', barlabel = 'data',
                      start = 'start', end = 'end'))
    

    【讨论】:

    • 所以我正在使用您的代码,但我正在从 CSV 读取并收到此错误:Invalid data at row #7: start(Sat Jul 29 67882 20:56:51 GMT-0500 (CDT)) &gt; end(Wed Dec 31 1969 18:33:04 GMT-0600 (CST)).× 所以我在代码中使用此行来读取 CSV:dd &lt;- read.csv("_slash_gaze.csv", header = TRUE, sep = ","),这是 csv @ 987654322@为什么会破码?
    • 加上如果不是 pastebin 在 stackoverflow 中提问,通常在哪里发布他们的 .csv 内容?谢谢! @rawr
    • 其实这有点奇怪。现在我再次运行相同的代码,我在第 5 行得到错误! Invalid data at row #5: start(Sat Jul 27 256430 14:35:45 GMT-0500 (CDT)) &gt; end(Wed Dec 31 1969 18:06:44 GMT-0600 (CST)).×
    • @MonaJalal 是的,当您读入它时,添加read.csv(..., colClasses = c('character','character')) 时间以整数形式读入,但由于它们太大,它们在科学上由substr 打印/读取导致问题的符号。如果您需要发布大量不适合您的问题(如果所有内容都相关),则 pastebin 很好。您也可以上传到 github 或使用 this 之类的要点
    • @MonaJalal 不,我真的不知道。最好弄清楚时间戳是如何编码的。我一直在玩它,直到根据您的问题出现正确的格式(您希望它以秒为单位 - 这就是除以 1e8 的来源)。真的,这是我发现的唯一一个有效的方法。所以我不确定解析时间的正确方法,这可能是错误的根源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多