在ggplot2中的同一刻面图中叠加不同的数据集

时间:2014-10-12 18:28:02

标签: r ggplot2

我需要使用ggplot2将两个构面列聚集到一列中。

在下面的例子中,我需要将DEG和RAN这两列的内容叠加到一起​​,同时为DEG和RAN数据(小点和平滑线)提供不同的颜色并提供相应的图例(这样我就可以区分了)它们被覆盖了。)

我觉得我的代码不是太多,太远了我需要的东西,但数据集的相对复杂性阻碍了我。如何在ggplot2中实现这个目标?

到目前为止,这是我的代码:

require(reshape2)
library(ggplot2)
library(RColorBrewer)

fileName = paste("./4.csv", sep = "") # csv file available here: https://www.dropbox.com/s/bm9hd0t5ak74k89/4.csv?dl=0

mydata = read.csv(fileName,sep=",", header=TRUE)

dataM = melt(mydata,c("id"))
dataM = cbind(dataM,colsplit(dataM$variable,pattern = "_",names = c("NM", "ORD", "CAT")))
dataM$variable <- NULL
dataM <- dcast(dataM, ... ~ CAT, value.var = "value")

my_palette <- colorRampPalette(rev(brewer.pal(11, "Spectral")))

ggplot(dataM, aes(x=NR ,y= ASPL)) +
geom_point(size = .4,alpha = .5) +
stat_smooth(se = FALSE, size = .5) +

theme_bw() +
theme(plot.background = element_blank(),
axis.line = element_blank(),
legend.key = element_blank(),
legend.title = element_blank()) +
scale_y_continuous("ASPL", expand=c(0,0), limits = c(1, 7)) + 
scale_x_continuous("NR", expand=c(0,0), limits = c(0, 100)) +
theme(legend.position="bottom") +
theme(axis.title.x = element_text(vjust=-0.3, face="bold", size=12)) + 
theme(axis.title.y = element_text(vjust=1.5, face="bold", size=12)) +
ggtitle("Title") + theme(plot.title = element_text(lineheight=.8, face="bold")) +
theme(title = element_text(vjust=2)) +
facet_grid(NM ~ ORD)

这就是它现在给我的东西:

enter image description here

额外的问题:为什么DEG / SF没有显示平滑线?

1 个答案:

答案 0 :(得分:1)

您可以使用group美学来定义具有相同ORD值的数据点。您还可以将美学shapecolor映射到此变量。您还可以使用.指定未按特定维度拆分构面。

在将NRASPL转换为数字变量之后,我对您的代码进行了更改:

dataM$NR <- as.integer(dataM$NR)
dataM$ASPL <- as.numeric(dataM$ASPL)

ggplot(dataM, aes(x=NR ,y= ASPL, group=ORD, color=ORD)) +
  geom_point(size = .7,alpha = .5, aes(shape=ORD)) +  ## increased size
  stat_smooth(se = FALSE, size = .5) +
  theme_bw() +
  theme(plot.background = element_blank(),
        axis.line = element_blank(),
        legend.key = element_blank(),
        legend.title = element_blank()) +
  scale_y_continuous("ASPL", expand=c(0,0), limits = c(1, 7)) + 
  scale_x_continuous("NR", expand=c(0,0), limits = c(0, 100)) +
  theme(legend.position="bottom") +
  theme(axis.title.x = element_text(vjust=-0.3, face="bold", size=12)) + 
  theme(axis.title.y = element_text(vjust=1.5, face="bold", size=12)) +
  ggtitle("Title") + theme(plot.title = element_text(lineheight=.8, face="bold")) +
  theme(title = element_text(vjust=2)) +
  facet_grid(NM ~.)