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
图中显示的相同分面图像?非常感谢任何帮助或建议!
答案 0 :(得分:1)
您实际上要做的是重塑数据并绘制数据。现在您已手动完成此操作,但这可以使用dplyr
和tidyr
软件包以编程方式完成:
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())
这给出了:
您也可以使用dplyr
包,而不是tidyr
和reshape2
的组合。
作为替代方案,您可以考虑以下解决方案:
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())
这给出了: