以下是我的資料集:
| 結果 | 課程1 | 課程2 | 課程3 |
|---|---|---|---|
| 經過 | 15 | 17 | 18 |
| 經過 | 12 | 14 | 19 |
| 失敗 | 9 | 13 | 3 |
| 失敗 | 3 | 2 | 0 |
| 經過 | 14 | 11 | 20 |
| 失敗 | 5 | 0 | 7 |
我想繪制一個分組的條形圖。我能夠繪制以下圖表,但我希望在同一圖表中顯示兩個結果。
par(mfrow=c(1,1))
options(scipen=999)
coul <- brewer.pal(3, "Set2")
# Bar graph for passed courses
result_pass <-data %>% filter(Result=='Pass') %>% summarize(c1_tot=sum(course1),
c2_tot = sum(course2), c3_tot = sum(course3) )
col_sum <- colSums(result_pass[,1:3])
barplot(colSums(result_pass[,1:3]), xlab = "Courses", ylab = "Total Marks", col = coul, ylim=range(pretty(c(0, col_sum))), main = "Passed courses ")
# Bar graph for Failed courses
result_fail <-data %>% filter(Result=='Fail') %>% summarize(c1_tot=sum(course1),
c2_tot = sum(course2), c3_tot = sum(course3) )
col_sum <- colSums(result_fail[,1:3])
barplot(colSums(result_fail[,1:3]), xlab = "Courses", ylab = "Total Marks", col = coul, ylim=range(pretty(c(0, col_sum))), main = "Failed courses ")
我可以合并以上兩個圖并為通過和失敗課程創建分組條形圖的任何建議。
uj5u.com熱心網友回復:
這可能比你想象的要容易。只需將資料直接放入aggregate并用作公式. ~ Result,其中.表示所有其他列。洗掉第一列[-1]和強制as.matrix(因為barplot吃矩陣)會產生我們需要的格式barplot。
這是基本代碼:
barplot(as.matrix(aggregate(. ~ Result, data, sum)[-1]), beside=TRUE)
這里有一些視覺增強:
barplot(as.matrix(aggregate(. ~ Result, data, sum)[-1]), beside=TRUE, ylim=c(0, 70),
col=hcl.colors(2, palette='viridis'), legend.text=sort(unique(data$Result)),
names.arg=names(data)[-1], main='Here could be your title',
args.legend=list(x='topleft', cex=.9))
box()

資料:
data <- structure(list(Result = c("pass", "pass", "Fail", "Fail", "pass",
"Fail"), course1 = c(15L, 12L, 9L, 3L, 14L, 5L), course2 = c(17L,
14L, 13L, 2L, 11L, 0L), course3 = c(18L, 19L, 3L, 0L, 20L, 7L
)), class = "data.frame", row.names = c(NA, -6L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394494.html
下一篇:在R中繪制圖形時的縮放問題
