rm(list=ls()) event_file <- "tincan_sample.csv" video_file <- "video_list.csv" output_file <- "figure_4_sample_vis.pdf" ds<-read.csv(file=event_file, stringsAsFactors=FALSE) ds$counter<-1 ds$youtube<-ds$object_id ds$youtube<-gsub("http://www.youtube.com/watch","", ds$youtube) ds$youtube<-gsub("https://www.youtube.com/watch","", ds$youtube) ds$youtube<-gsub("\\?feature=player_embedded","", ds$youtube) ds$youtube<-gsub("\\&feature=player_embedded","", ds$youtube) ds$youtube<-gsub("\\?v=","", ds$youtube) ds$youtube<-gsub("\\&v=","", ds$youtube) ds<-ds[ds$dev == "FALSE",] ds<-ds[ds$verb == "watched",] ds2<-aggregate(ds$counter, by=list(ds$youtube), FUN="sum") names(ds2)<-c("id", "views") ds2$year<-2014 ds_vid<-read.csv(file=video_file, stringsAsFactors=FALSE) ds_vid2<-ds_vid[,c("week", "type", "title", "sequence", "length", "lesson_video_id")] ds2<-merge(ds2, ds_vid2, by.x="id", by.y="lesson_video_id", all.x=TRUE, all.y=TRUE) ds_vid<-ds_vid[,c("year", "week", "type", "title", "tincan", "sequence", "length", "lesson_video_id")] names(ds_vid)<-c("year", "week", "type", "title", "views", "sequence", "length", "id") ds_final<-rbind(ds2, ds_vid) ds_final$color<-"skyblue" ds_final$color[ds_final$year==2014]<-"blue" ds_final$color[ds_final$type=="Hands-on"]<-"green" ds_final$color[ds_final$type=="Hands-on" & ds_final$year==2014]<-"darkgreen" ds_final<-ds_final[order(-ds_final$sequence, -ds_final$year),] ds_vid<-ds_vid[order(-ds_vid$sequence),] vidlabels=ds_vid$title pdf(file=output_file, height=8, width=11) par(mar=c(5,16,3,2)) bp <- barplot(ds_final$views, horiz=TRUE, col=ds_final$color, axis.lty = 1, las = 1, adj=.5, names.arg="", cex.names = 0.5, xlab="Number of Hits", main="IVMOOC Video Views", border=NA, xlim=c(0, 800)) vidpoints1<-bp[seq(1,length(bp),2)] vidpoints2<-bp[seq(2,length(bp),2)] vidpoints = (vidpoints1+vidpoints2)/2 axis(2, at=vidpoints, labels=vidlabels, las =1, cex.axis=0.4) text(700, (bp[3]+bp[4])/2, "New", pos=4) abline(h=(bp[6]+bp[7])/2) text(700, (bp[17]+bp[18])/2, "Week 7", pos=4) abline(h=(bp[26]+bp[27])/2) text(700, (bp[39]+bp[40])/2, "Week 6", pos=4) abline(h=(bp[52]+bp[53])/2) text(700, (bp[60]+bp[61])/2, "Week 5", pos=4) abline(h=(bp[68]+bp[69])/2) text(700, (bp[78]+bp[79])/2, "Week 4", pos=4) abline(h=(bp[88]+bp[89])/2) text(700, (bp[98]+bp[99])/2, "Week 3", pos=4) abline(h=(bp[108]+bp[109])/2) text(700, (bp[117]+bp[118])/2, "Week 2", pos=4) abline(h=(bp[126]+bp[127])/2) text(700, (bp[132]+bp[133])/2, "Week 1", pos=4) opar<-par par(fig=c(0, 1, 0, 1), oma=c(0, 0, 0, 0), mar=c(0, 0, 0, 0), new=TRUE) plot(0, 0, type='n', bty='n', xaxt='n', yaxt='n') legend("topleft", title="Video Types", ncol=2, c("Theory 2013", "Hands-On 2013", "Theory 2014", "Hands-On 2014"), fill = c("lightblue", "palegreen", "blue", "darkgreen"), border = NA) par(opar) dev.off()