试图绘制日期范围

时间:2013-01-21 15:06:06

标签: r plot

我有19个标签在整个夏季和秋季的不同时间进行部署和报告。目前我正在尝试创建一个图表来显示部署和报告的时间,以便我可以看到数据收集中存在重叠的位置。我尝试了几种不同的绘图功能,包括plot(),boxplot()和ggplot()。我已经接近了我想要的boxplot(),但希望盒子从开始延伸到结束日期并完全消除胡须。有没有办法做到这一点,还是应该使用不同的功能或包?这是我的代码,它可能不是最有效的,因为我对R有点新。

注意:tnumber只是我使用的标签号。这些日期都来自不同的数据集。

dep.dates=boxplot(t62104[,8],t40636[,8],t84337[,8],t84353[,8],t62103[,8],
                  t110289[,8],t62102[,8],t62105[,8],t62101[,8],t84360[,8],
                  t117641[,8],t40643[,8],t110291[,8],t84338[,8],t110290[,8],
                  t84363[,8],t117639[,8],t117640[,8],t117638[,8],horizontal=T,
                  main='Tag deployment and pop-up dates',xlab='Month',
                  ylab='Tag number',names=c('62104','40636','84337','84353',
                  '62103','110289','62102','62105','62101','84360','117641',
                  '40643','110291','84338','110290','84363','117639','117640',
                  '117638'),las=1)

1 个答案:

答案 0 :(得分:1)

如果您关心的只是范围,那么这样的事情就会奏效。

require(ggplot2)

require(SpatioTemporal)

data(mesa.data.raw)

require(data.table)

out <- as.data.table(t(apply(mesa.data.raw$obs, 2, function(.v){ 
    names(.v)[range(which(!is.na(.v)))]
})),keep=TRUE)

setnames(out, "rn", "monitors")


ggplot(out, aes(x=monitors, y=V1, ymin=V1, ymax=V2,)) + geom_crossbar() + coord_flip()
ggplot(out, aes(x=monitors, ymin=V1, ymax=V2)) + geom_linerange() + coord_flip()

第一个ggplot调用会创建水平条,但我无法弄清楚如何摆脱中心线,所以我只是把它放在开头。

第二个图创建了水平线,我认为无论如何都会看起来更好。