#suvery_Q24_limitsToExapansion.R #### Limits to expanding sensor network #### #### Q24. Limits to expansion - 5 levels of response #### expandlimits <- data_clean[,c(3,79:88)] names(expandlimits) <- c("RespondentID","None","AccessStudyAreas","Funding", "UnderstandCI-IM","Hardware","PropSoftware", "DiffFreeSoftware","TrainBigData", "NoProgrammersIMs","PoorInstCommitBarriers") expandlimits_melt <- melt(expandlimits, id.vars = "RespondentID") expandlimits_melt <- expandlimits_melt[which(expandlimits_melt$value != ""),] expandlimits_melt2 <- unique(ddply(expandlimits_melt, c("variable","value"), function(x) data.frame(x, count=nrow(x)))) expandlimits_melt2 <- expandlimits_melt2[,2:4] expandlimits_melt2$value <- factor(expandlimits_melt2$value, levels = c("1 (strongly agree)", "2 (agree)", "3 (neutral)", "4 (disagree)", "5 (strongly disagree)")) vars <- levels(expandlimits_melt2$variable) values <- levels(expandlimits_melt2$value) combos_expandlimits <- data.frame(variable = rep(vars, each = length(values)), value = rep(values,length(vars))) expandlimits_melt3 <- unique(expandlimits_melt2) expandlimits_melt4 <- merge(combos_expandlimits, expandlimits_melt3, by = c("variable", "value"), all.x = TRUE) expandlimits_melt4$count[which(is.na(expandlimits_melt4$count))] <- 0 totals <- as.vector(tapply(X = expandlimits_melt4$count, INDEX = expandlimits_melt4$variable, FUN = sum)) totals2 <- rep(totals, each = 5) expandlimits_melt4$totals2 <- totals2 expandlimits_melt4$percent <- round(expandlimits_melt4$count/expandlimits_melt4$totals * 100, 1) plot_limitsToExpansion_hard <- ggplot(expandlimits_melt4, aes(x = variable, y = percent, fill = value)) + geom_histogram(stat = "identity", colour = "gray", width = 0.7) + coord_flip(ylim = c(0,100)) + xlab("") + ylab("") + ggtitle("") + #"Institional and infrastructure factors") + scale_x_discrete(limits=c("Hardware","AccessStudyAreas","PoorInstCommitBarriers", "Funding","None"), labels = c("Hardware","Access to study areas","Institutional commitment", "Funding","No limitations")) + scale_fill_manual(values = c("#0DA6F0","#79f7f9", "#b7f97a", "#faf97a", "#F0D20D")) + theme_bw() + theme(axis.text.x = element_text(angle = 0, hjust = .5, family = "Helvetica", size = 12, color = "black"), axis.text.y = element_text(family = "Helvetica", size = 12, color = "black"), legend.position="none", legend.title = element_blank(), plot.margin=unit(c(0,0.5,0,0.3),units="cm")) plot_limitsToExpansion_hard ggsave(filename = "plots/plot_limitsToExpansion_hard.eps", plot = plot_limitsToExpansion_hard, width = 6.5, height = 1.8, dpi = 300, bg = "white", colormodel = "cymk") plot_limitsToExpansion_soft <- ggplot(expandlimits_melt4, aes(x = variable, y = percent, fill = value)) + geom_histogram(stat = "identity", colour = "gray", width = 0.7) + coord_flip(ylim = c(0,100)) + xlab("") + ylab("Percent repondents") + ggtitle("") + #"Software and training factors") + scale_x_discrete(limits=c("DiffFreeSoftware","PropSoftware","TrainBigData", "NoProgrammersIMs","UnderstandCI-IM"), labels = c("Easy to use free software", "Proprietary software", "Training in big data", "Programmers or IMs", "Understanding of CI or IM")) + scale_fill_manual(values = c("#0DA6F0","#79f7f9", "#b7f97a", "#faf97a", "#F0D20D")) + theme_bw() + theme(axis.text.x = element_text(angle = 0, hjust = .5, family = "Helvetica", size = 12, color = "black"), axis.text.y = element_text(family = "Helvetica", size = 12, color = "black"), legend.position="none", legend.title = element_blank(), plot.margin=unit(c(0,0.5,0,0),units="cm")) plot_limitsToExpansion_soft ggsave(filename = "plots/plot_limitsToExpansion_soft.eps", plot = plot_limitsToExpansion_soft, width = 6.5, height = 1.8, dpi = 300, bg = "white", colormodel = "cymk") jpeg(filename = "plots/plot_limitsToExpansion_all.jpg", width = 7, height = 4, units = "in", res = 300, bg = "white") grid.newpage() pushViewport(viewport(layout=grid.layout(2,1,heights=c(0.46,0.54)))) print(plot_limitsToExpansion_hard, vp=viewport(layout.pos.row=1,layout.pos.col=1)) print(plot_limitsToExpansion_soft, vp=viewport(layout.pos.row=2,layout.pos.col=1)) dev.off() pushViewport(viewport(layout=grid.layout(2,1,heights=c(0.46,0.54)))) print(plot_limitsToExpansion_hard, vp=viewport(layout.pos.row=1,layout.pos.col=1)) print(plot_limitsToExpansion_soft, vp=viewport(layout.pos.row=2,layout.pos.col=1)) ####Reduce from 5 levels to 3 levels #### expandlimits <- data_clean[,c(3,79:88)] names(expandlimits) <- c("RespondentID","None","AccessStudyAreas","Funding", "UnderstandCI-IM","Hardware","PropSoftware", "DiffFreeSoftware","TrainBigData", "NoProgrammersIMs","PoorInstCommitBarriers") expandlimits <- expandlimits[which(!is.na(expandlimits[,2]) & !is.na(expandlimits[,3]) & !is.na(expandlimits[,4]) & !is.na(expandlimits[,5]) & !is.na(expandlimits[,6]) & !is.na(expandlimits[,7]) & !is.na(expandlimits[,8]) & !is.na(expandlimits[,9]) & !is.na(expandlimits[,10]) & !is.na(expandlimits[,11])),] expandlimits_melt <- melt(expandlimits, id.vars = "RespondentID") expandlimits_melt$value <- as.factor(expandlimits_melt$value) expandlimits_melt$value <- mapvalues(expandlimits_melt$value, levels(expandlimits_melt$value), c("agree","agree","neutral","disagree","disagree")) expandlimits_melt2 <- unique(ddply(expandlimits_melt, c("variable","value"), function(x) data.frame(x, count=nrow(x)))) expandlimits_melt2 <- expandlimits_melt2[,2:4] vars <- levels(expandlimits_melt2$variable) values <- levels(expandlimits_melt2$value) combos_expandlimits <- data.frame(variable = rep(vars, each = length(values)), value = rep(values,length(vars))) expandlimits_melt3 <- unique(expandlimits_melt2) expandlimits_melt4 <- merge(combos_expandlimits, expandlimits_melt3, by = c("variable", "value"), all.x = TRUE) expandlimits_melt4$count[which(is.na(expandlimits_melt4$count))] <- 0 totals <- as.vector(tapply(X = expandlimits_melt4$count, INDEX = expandlimits_melt4$variable, FUN = sum)) totals2 <- rep(totals, each = 3) expandlimits_melt4$totals2 <- totals2 expandlimits_melt4$percent <- round(expandlimits_melt4$count/expandlimits_melt4$totals * 100, 1) plot_limitsToExpansion_3levels_hard <- ggplot(expandlimits_melt4, aes(x = variable, y = percent, fill = value)) + geom_histogram(stat = "identity", colour = "transparent", width = 0.7) + coord_flip(ylim = c(0,100)) + xlab("") + ylab("") + ggtitle("General factors") + scale_x_discrete(limits=c("Hardware","AccessStudyAreas","PoorInstCommitBarriers", "Funding","None"), labels = c("Hardware","Access to study areas","Institutional commitment", "Funding","No limitations")) + scale_fill_manual(values = rev(brewer.pal(3,"Blues"))) + theme_bw() + theme(axis.text.x = element_text(angle = 0, hjust = 1, family = "Helvetica", size = 12, color = "black"), axis.text.y = element_text(family = "Helvetica", size = 12, color = "black"), legend.position="none", legend.title = element_blank(), plot.margin=unit(c(1,.5,0,3),units="cm")) ggsave(filename = "plots/plot_limitsToExpansion_3levels_hard.jpg", plot = plot_limitsToExpansion_3levels_hard, width = 9, height = 3, units = "in", dpi = 300) plot_limitsToExpansion_3levels_hard plot_limitsToExpansion_3levels_soft <- ggplot(expandlimits_melt4, aes(x = variable, y = percent, fill = value)) + geom_histogram(stat = "identity", colour = "transparent", width = 0.7) + coord_flip(ylim = c(0,100)) + xlab("") + ylab("Percent repondents") + ggtitle("Software and training factors") + scale_x_discrete(limits=c("DiffFreeSoftware","PropSoftware","TrainBigData", "NoProgrammersIMs","UnderstandCI-IM"), labels = c("Easy to use free software", "Proprietary software", "Training in big data", "Programmers or information managers", "Understanding of CI or IM")) + scale_fill_manual(values = rev(brewer.pal(3,"Blues"))) + theme_bw() + theme(axis.text.x = element_text(angle = 0, hjust = 1, family = "Helvetica", size = 12, color = "black"), axis.text.y = element_text(family = "Helvetica", size = 12, color = "black"), legend.position="bottom", legend.title = element_blank(), legend.text = element_text(family = "Helvetica", size = 12, color = "black")) ggsave(filename = "plots/plot_limitsToExpansion_3levels_soft.jpg", plot = plot_limitsToExpansion_3levels_soft, width = 9, height = 3, units = "in", dpi = 300) plot_limitsToExpansion_3levels_soft jpeg(filename = "plots/plot_limitsToExpansion_3levels_all.jpg", width = 9, height = 6, units = "in", res = 300, bg = "transparent") grid.newpage() pushViewport(viewport(layout=grid.layout(2,1,heights=c(0.46,0.54)))) print(plot_limitsToExpansion_3levels_hard, vp=viewport(layout.pos.row=1,layout.pos.col=1)) print(plot_limitsToExpansion_3levels_soft, vp=viewport(layout.pos.row=2,layout.pos.col=1)) grid.text('n = 69 to 77', x=.9, y=.13, gp=gpar(col="black", family = "Helvetica", fontsize=12), vp=viewport(layout.pos.row=2,layout.pos.col=1)) dev.off() pushViewport(viewport(layout=grid.layout(2,1,heights=c(0.46,0.54)))) print(plot_limitsToExpansion_3levels_hard, vp=viewport(layout.pos.row=1,layout.pos.col=1)) print(plot_limitsToExpansion_3levels_soft, vp=viewport(layout.pos.row=2,layout.pos.col=1)) grid.text('n = 69 to 77', x=.9, y=.17, gp=gpar(col="black", family = "Helvetica", fontsize=12), vp=viewport(layout.pos.row=2,layout.pos.col=1))