使用ggplot

时间:2015-07-30 18:39:18

标签: r loops plot ggplot2

我有一个大型数据集(~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的所有值,导出图等等...直到所有身份证号码已经运行。 有没有办法写一个循环或其他一些代码来完成这个?

1 个答案:

答案 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个图表)。或者将它们分组为白天和黑夜。看看你可能感兴趣的主题; - )。