下面是一個包含30個獨特樣本(ID 1到30)的示例數據框,每個樣本有三個測量(在三個不同的閾值('G1'列); 5e-03,5e -05,5e-08)。 90個觀測值中的每一個都有一個p值(P列)。最後,每個三十樣本可以屬於十個不同類別之一(「G2」)凹凸類別上的方面barplot
# example data.frame
df <- data.frame(
'ID' = as.character(unlist(lapply(seq(1:30), function(x) rep(x,3)))),
'P' = runif(n = 90, min = 0, max = 1),
'G1' = as.character(c('5e-03','5e-05','5e-08')),
'G2' = as.character(unlist(lapply(sample(1:10, size = 30, replace = T), function(x) rep(x,3))))
)
我可以使用這個命令產生一個很好的酒吧情節[對不起,所有的數值變量!]。
ggplot(df, aes(x = interaction(ID,G2), y = P, fill = G2)) +
geom_bar(stat = 'identity') +
coord_flip() +
facet_grid(. ~ G1)
,看起來像這樣:
Plot 1: image with one facet, and 'G2' visualised using colour
不過,我真的很想做的是有兩個方面;列上的'G1'(就像它當前的那樣),而不是使用條形顏色來劃分'G2'變量,我想要G2上的第二個水平面。這是我所嘗試過的:
ggplot(df, aes(x = interaction(ID,G2), y = P, fill = G2)) +
geom_bar(stat = 'identity') +
coord_flip() +
facet_grid(G2 ~ G1)
這是不對的。當我面向G2時,它在每個方面繪製全部個樣本。這很難看,因爲每個樣本只能屬於一個G2類別。如何生成僅包含屬於該組的柱的第二個方面?我曾嘗試調整facet_grid中的'drop','scale'和'space'變量,但它並沒有改進。
This是我正在尋找 - 我已經手動繪製應該在方面的陰謀部分的矩形。它基本上與曲線1相同,除了條被分成G2曲面。
你爲什麼要加coord_flip()?刪除它並再次運行相同的代碼。我想這就是你要找的 –
感謝您的答覆。刪除coord_flip()並不能解決問題,但G2方面仍在繪製未觀察到的數據。我正在使用coord_flip(),因爲我希望整個頁面上的情節出於審美原因。 – mbyvcm
也許改變互動來粘貼? '粘貼(ID,G2,sep =「。」)' – zx8754