ggplot中的分面数据布局

时间:2014-11-25 12:29:43

标签: r ggplot2 formatting facet

R新手:我有一个大型数据集,我希望在facet中可视化。示例数据框:

Sample <- c("Hair", "Hair", "Hair", "Skin", "Skin", "Skin")
Drug <- c("Vehicle", "Drug1", "Drug2", "Vehicle", "Drug1", "Drug2")
Param1 <- c(2,4,6,2,3,6)
Param2 <- c(10,15,20,10,18,23)
data <- data.frame(Sample,Drug,Param1,Param2)

我可以使用以下内容为Param1制作分面图像

ggplot (data, aes(x=Drug, y=Param1)) + geom_point() +facet_grid(.~Sample)

但是我希望Param2能够在相同的分面输出中可视化。到目前为止,我通过重新格式化数据框如下所示,但是对于我拥有的更大的数据集来说这将是非常耗时的:

data2 <- data [,1:2]
data3 <- data2
data2 <- rbind (data2,data3)
Parameter <- c(rep(1,6),rep(2,6))
Combo = c(Param1,Param2)
data2 <- data.frame (data2, Combo, Parameter)
ggplot (data2, aes(x=Drug, y=Combo)) + geom_point() + facet_grid (Parameter~Sample)

是否可以使用data data.frame来实现data2图中显示的相同分面图像?非常感谢任何帮助或建议!

1 个答案:

答案 0 :(得分:1)

您实际上要做的是重塑数据并绘制数据。现在您已手动完成此操作,但这可以使用dplyrtidyr软件包以编程方式完成:

library(dplyr)
library(tidyr)
data2 <- data %>% gather(Parameter, Combo, c(Param1,Param2))

ggplot(data2, aes(x=Drug, y=Combo, color=Parameter)) +
  geom_point(size=3) +
  facet_grid(Parameter~Sample) +
  theme(axis.title.y=element_blank())

这给出了: enter image description here

您也可以使用dplyr包,而不是tidyrreshape2的组合。


作为替代方案,您可以考虑以下解决方案:

ggplot (data, aes(x=Drug, y=Param1)) + 
  geom_point(aes(color="red"), size=3) +
  geom_point(aes(x=Drug, y=Param2, color="blue"), size=3) +
  scale_color_manual("Parameter", values=c("red","blue"), labels=c("Param1","Param2")) +
  facet_grid(.~Sample) +
  theme(axis.title.y=element_blank())

这给出了: enter image description here