我有一个大型数据集(~140000值),我想为其绘制图。
数据由值,时间戳和ID号组成。 ID号使用时间戳将值分组为持续时间(例如,每10分钟,1小时等等)。在前10分钟内为时间戳加上的每个值都分配为1.这将继续,直到为所有值分配了组号。这给了我超过一千个唯一的组ID号
该图是直方图,x轴具有值范围(例如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的所有值,导出图等等...直到所有身份证号码已经运行。 有没有办法写一个循环或其他一些代码来完成这个?
答案 0 :(得分:0)
正如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个图表)。或者将它们分组为白天和黑夜。看看你可能感兴趣的主题; - )。