包含两个图的散点图上的着色点
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
我想为包含两个图的散点图上的点着色。我尝试了以下代码。
> 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