我有一个很大的数据集(~140000个值),我想要为它绘制一些图。该数据由一个值、一个时间戳和一个ID号组成。ID号使用时间戳将值存入时间持续时间(例如。每10分钟、1小时等)在前10分钟内标记的每个值都被指定为1,直到所有值都被分配到组号为止。这给了我一千多个唯一的组ID号。
这个图是一个直方图,其x轴有值范围(ex )。1:2,2:3,3:4,等等)Y轴是属于每个范围的采样值的比例。我用来为所有数据生成一个绘图的代码如下所示:
ggplot(ICICLICKS1, aes(x=ICIms))+ geom_histogram(aes(y=..count../sum(..count..)),binwidth=2) + scale_x_continuous(limits=c(1.5,140), breaks = seq(0,140,5))+ scale_y_continuous(limits=c(0.0,0.25))+ geom_vline(xintercept=c(10,50))+ xlab("ICI(ms)")+ ylab("Proportion")+ ggtitle("Histogram of Porpoise Inter-click Intervals")
我的最终目标是每隔10分钟就有一个情节。因为那是几千块图,我需要找到一种方法让R运行代码,用ID号1绘制所有值,导出图,用ID号2绘制所有值,导出图等等.直到所有的ID号码都被运行了。是否有一种方法可以编写循环或其他代码来完成这一任务?
发布于 2015-08-03 05:03:35
正如jonhson_shuffle所建议的,这将为您生成一千张图表:
for(i in 1:max(ICICLICKS1$ID)) {
ggplot(subset(ICICLICKS1,ID==i), aes(x=ICIms))+
geom_histogram(aes(y=..count../sum(..count..)),binwidth=2) +
scale_x_continuous(limits=c(1.5,140), breaks = seq(0,140,5))+
scale_y_continuous(limits=c(0.0,0.25))+
geom_vline(xintercept=c(10,50))+
xlab("ICI(ms)")+
ylab("Proportion")+
ggtitle("Histogram of Porpoise Inter-click Intervals")
ggsave(paste("plot",i,".pdf"))
}
就我个人而言,我不想看一千张图,所以我每小时对它们进行分组,并使用facet_wrap(~ID)
每10分钟显示一次(每小时6张图)。或者日以继夜地组织他们。看看你的主题,可能会很有趣;-)。
https://stackoverflow.com/questions/31731597
复制