下面是一个包含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