包含两个图的散点图上的着色点

时间:2015-12-16 11:48:34

标签: r ggplot2 scatter-plot

我想在包含两个图的散点图上着色。我尝试使用以下代码。

> df
    x1  y1  x2  y2
1  3.6 6.7 5.8 8.9
2 12.7 9.2 8.6 9.0
3  5.8 8.9 7.9 8.7
4   NA  NA 9.0 4.5
5   NA  NA 6.0 9.0

 x1= df$x1
 x2=df$x2
 y1=df$y1
 y2=df$y2
d1 <- data.frame(x1, y1, x2, y2)
library(ggplot2)
ggplot(d1) + geom_point(aes(x = x1, y = y1)) + geom_point(aes(x = x2, y = y2))+ xlim(0,15) + ylim(0,15) + xlab("data1") + ylab("data2")  +
  scale_colour_manual(name = 'data', values = setNames(c('red','green')))

你的帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

您的主要问题似乎是以正确的格式绘制数据(根据昨天的问题判断)。通常,ggplot最适用于每个数据点,所有必要信息(至少x和y,但在本例中为颜色组)是数据中的一行。

因此,我们首先将您的数据拆分为df1和df2:

df1 <- cbind(df[,1:2],'1')
df2 <- cbind(df[,3:4],'2')

然后我们给他们相同的列名:

colnames(df1) <- colnames(df2) <- c("x","y","id")

将它们绑在一起

df_long <- rbind(df1,df2)

head(df_long,4)
# > head(df_long,4)
# x   y id
# 1  3.6 6.7  1
# 2 12.7 9.2  1
# 3  5.8 8.9  1
# 4   NA  NA  1

绘图是微不足道的:

p <- ggplot(df_long, aes(x=x,y=y,group=id,color=id))+
  geom_point()
p

enter image description here

答案 1 :(得分:0)

试试这个:

dffx1<-data.frame(x1=1:5,y1=1:5,x2=6:10,y2=6:10)
dffx<-rbind(as.matrix(dffx1[,1:2]),as.matrix(dffx1[,3:4]))
df<-as.data.frame(dffx)
df<-cbind(df,group=c(rep(1,nrow(dffx1)),rep(2,nrow(dffx1))))
ggplot(df,aes(x=x1,y=y1,color=group))+geom_point(size=5)+
scale_colour_manual(values = c("red", "green"), labels= c("red", "green")

enter image description here