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

coloring points on scatterplots containing two plots

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

> 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')))

您的帮助将不胜感激!

试试这个:

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")

)

您的主要问题似乎是以正确的格式获取数据以进行绘图(根据您昨天的问题判断)。一般来说,如果对于每个数据点,所有必要的信息(至少 x 和 y,但在这种情况下颜色组)是数据中的一行,则 ggplot 效果最好。

因此,我们首先将您的数据拆分为 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