R 时间序列直方图

R 时间序列直方图,r,d3.js,time-series,histogram,R,D3.js,Time Series,Histogram,是否可以使用R或D3.js创建如演示文稿(幻灯片36-39)所述的时间序列直方图?还是有更好的方法将弯曲数据显示为时间序列 编辑:这里有一些预扣。理想情况下,D3或R将自行进行扣合。是的,如果不清楚,我知道我可以自己写。我只是想知道是否已经有一个包,这样做,我只是还没有遇到它。谢谢 将您的数字放入矩阵并使用“图像(mat)”?看起来就是这样。网格。光栅。还是我遗漏了什么 使用ggplot、光栅和其他可能的方法也可以做到这一点。这里有一个可能的解决方案,使用R和ggplot2 您的数据,准备粘贴到

是否可以使用R或D3.js创建如演示文稿(幻灯片36-39)所述的时间序列直方图?还是有更好的方法将弯曲数据显示为时间序列


编辑:这里有一些预扣。理想情况下,D3或R将自行进行扣合。是的,如果不清楚,我知道我可以自己写。我只是想知道是否已经有一个包,这样做,我只是还没有遇到它。谢谢

将您的数字放入矩阵并使用“图像(mat)”?看起来就是这样。网格。光栅。还是我遗漏了什么


使用ggplot、光栅和其他可能的方法也可以做到这一点。

这里有一个可能的解决方案,使用R和ggplot2

您的数据,准备粘贴到R控制台:

dat = structure(list(date = structure(c(15541, 15541, 15541, 15541, 
    15541, 15541, 15541, 15541, 15541, 15541, 15541, 15541, 15541, 
    15541, 15541, 15541, 15541, 15542, 15542, 15542, 15542, 15542, 
    15542, 15542, 15542, 15542, 15542, 15542, 15542, 15542, 15542, 
    15542, 15543, 15543, 15543, 15543, 15543, 15543, 15543, 15543, 
    15543, 15543, 15543, 15543, 15543, 15543, 15543, 15543, 15543, 
    15543, 15543, 15544, 15544, 15544, 15544, 15544, 15544, 15544, 
    15544, 15544, 15544, 15544, 15544, 15544, 15544, 15544, 15544, 
    15544, 15544, 15544, 15544, 15544, 15545, 15545, 15545, 15545, 
    15545, 15545, 15545, 15545, 15545, 15545, 15545, 15545, 15545, 
    15545, 15545, 15545, 15545, 15546, 15546, 15546, 15546, 15546, 
    15546, 15546, 15546, 15546, 15546, 15546, 15546, 15546, 15546, 
    15546, 15546, 15546, 15547, 15547, 15547, 15547, 15547, 15547, 
    15547, 15547, 15547, 15547, 15547, 15547, 15547, 15547, 15547, 
    15547, 15547, 15547, 15547), class = "Date"), bucket = c(800L, 
    900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 1700L, 
    1800L, 1900L, 2000L, 2100L, 2200L, 2300L, 2400L, 800L, 900L, 
    1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 1700L, 1800L, 
    1900L, 2000L, 2100L, 2200L, 900L, 1000L, 1100L, 1200L, 1300L, 
    1400L, 1500L, 1600L, 1700L, 1800L, 1900L, 2000L, 2100L, 2200L, 
    2300L, 2400L, 2500L, 2600L, 2800L, 800L, 900L, 1000L, 1100L, 
    1200L, 1300L, 1400L, 1500L, 1600L, 1700L, 1800L, 1900L, 2000L, 
    2100L, 2200L, 2300L, 2400L, 2500L, 2600L, 2700L, 2800L, 800L, 
    900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 1700L, 
    1800L, 1900L, 2000L, 2100L, 2200L, 2300L, 2400L, 800L, 900L, 
    1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 1700L, 1800L, 
    1900L, 2000L, 2100L, 2200L, 2300L, 2400L, 1300L, 1400L, 1500L, 
    1600L, 1700L, 1800L, 1900L, 2000L, 2100L, 2200L, 2300L, 2400L, 
    2500L, 2600L, 2700L, 2800L, 2900L, 3000L, 3200L), cnt = c(119L, 
    123L, 173L, 226L, 284L, 257L, 268L, 244L, 191L, 204L, 187L, 177L, 
    164L, 125L, 140L, 109L, 103L, 123L, 165L, 237L, 278L, 338L, 306L, 
    316L, 269L, 271L, 241L, 188L, 174L, 158L, 153L, 132L, 154L, 241L, 
    246L, 300L, 305L, 301L, 292L, 253L, 251L, 214L, 189L, 179L, 159L, 
    161L, 144L, 139L, 132L, 136L, 105L, 120L, 156L, 209L, 267L, 299L, 
    316L, 318L, 307L, 295L, 273L, 283L, 229L, 192L, 193L, 170L, 164L, 
    154L, 138L, 101L, 115L, 103L, 105L, 156L, 220L, 255L, 308L, 338L, 
    318L, 255L, 278L, 260L, 235L, 230L, 185L, 145L, 147L, 157L, 109L, 
    104L, 191L, 201L, 238L, 223L, 229L, 286L, 256L, 240L, 233L, 202L, 
    180L, 184L, 161L, 125L, 110L, 101L, 132L, 117L, 124L, 154L, 167L, 
    137L, 169L, 175L, 168L, 188L, 137L, 173L, 164L, 167L, 115L, 116L, 
    118L, 125L, 104L)), .Names = c("date", "bucket", "cnt"), 
    class = "data.frame", row.names = c(NA, -125L))
绘图代码:

library(ggplot2)

plot_1 = ggplot(dat, aes(x=date, y=bucket, fill=cnt)) +
         geom_tile() +
         scale_fill_continuous(low="#F7FBFF", high="#2171B5") +
         theme_bw()

ggsave("plot_1.png", plot_1, width=6, height=4)

如果在数据中包含零桶值的行,则绘图可能看起来更好。然后您可以将
low=“#F7FBFF”
更改为
low=“white”

这是D3中的一个版本,使用ggplot2模仿@bdemarest的答案:

此版本使用。如果您有一个大的数据集,您可能会从一个数据库中获得更好的性能

如果要使用D3计算存储桶,可以使用按天和按值对数据进行分组。也有,但由于您可能想要均匀分布的垃圾箱,并且每天都有相同的垃圾箱,d3.nest应该足够了


一个微妙的考虑:我将刻度线放在瓷砖之间的刻度上,以便直观地指示值是如何组合的。例如,左下角的bucket对应于7月20日800到900之间的所有值(其中7月20日是午夜到午夜的间隔);至少,这是我从你的数据中推测出来的。这比在rect中间加上标签要稍微清楚一些,因为它表示值是四舍五入而不是四舍五入的。

这些类型的问题需要
fortunes::fortune(“Yoda”)
。当然有可能。但是如果你问“有人已经在一个包中做了吗?”,答案可能是否定的。也就是说,这个图表很有趣,可能有人应该编写这样一个时间序列直方图。也许你能做到?使用
ggplot2
应该很容易做到。也许如果你发布一些样本数据,我可能会想画这样一个图。这看起来很像我想要的。非常感谢。日期是如何转换成数字的?@slashdottir,ggplot2正在处理将
date
类中的数据转换成适合打印的数据。不知道确切的方式,因为它是ggplot的内部。