我有一個數據幀,其中包含一列分類數據(兩個可能的值)和多個變量列。我需要繪製多個箱形圖,每個變量列一個。每個圖比較列1中給出的兩個分類組之間的變量值。到目前爲止,我通過爲每列編寫單獨的圖表調用來工作。使用R中的數據幀列繪製多個箱圖使用R
#CREATE DATASET
mydata <- data.frame(matrix(rlnorm(30*10,meanlog=0,sdlog=1), nrow=30))
colnames(mydata) <- c("categ", "var1","var2", "var3","var4", "var5", "var6", "var7", "var8", "var9")
mydata$var2 <- mydata$var2*5
mydata$categ <- sample(1:2)
mydata
#LAYOUT
par(mfrow=c(3,3), mar=c(4,4,0.5,0.5), mgp = c(1.5, 0.3, 0), tck = -0.01)
#BOXPLOTS
boxplot(var1 ~ categ, data = mydata, outpch = NA, ylim = c(0, 8), Main = "Title", ylab="VarLevel", tck = 1.0, names=c("categ1","categ2"))
stripchart(var1 ~ categ, data = mydata, vertical = TRUE, method = "jitter", ylim = c(0, 8), pch = 21, cex = 1, col=c(rgb(255, 0, 0, 100, max = 255), rgb(0, 0, 255, 100, max = 255)), bg = rgb(255, 255, 255, 10, max = 255), add = TRUE)
test <- wilcox.test(var1 ~ categ, data = mydata)
pvalue <- test$p.value
pvalueformatted <- format(pvalue, digits=3, nsmall=2)
mtext(paste(colnames(mydata)[2], " p = ", pvalueformatted), side=1, line=-13, at=0.9, cex = 0.6)
boxplot(var2 ~ categ, data = mydata, outpch = NA, ylim = c(0, 40), Main = "Title2", ylab="VarLevel", tck = 1.0, names=c("categ1","categ2"))
stripchart(var2 ~ categ, data = mydata, vertical = TRUE, method = "jitter", ylim = c(0, 40), pch = 25, cex = 1, col=c(rgb(255, 0, 0, 100, max = 255), rgb(0, 0, 255, 100, max = 255)), bg = rgb(255, 255, 255, 10, max = 255), add = TRUE)
test <- wilcox.test(var2 ~ categ, data = mydata)
pvalue <- test$p.value
pvalueformatted <- format(pvalue, digits=3, nsmall=2)
mtext(paste(colnames(mydata)[3], " p = ", pvalueformatted), side=1, line=-13, at=0.9, cex = 0.6)
兩個問題:
1)我想用一個函數或for循環腳本情節呼籲每個數據列。不知道如何做到這一點。我看到一些相關的帖子,但無法完成。現在嘗試使用基本函數,但如果需要,可以考慮使用ggplot或其他函數。
2)作爲循環/函數的一部分,有沒有辦法調整每個圖的y軸比例以適應變量的範圍?因此,對於一個給定的列,如果最大值是2,y軸的規模將上升至4。如果max爲100,y軸將上升到110
思想認識
一個很好的,可重複的問題 - 謝謝。 – jbaums