如何使用两种不同的色带?

时间:2019-06-04 05:48:46

标签: r ggplot2 scatter-plot

我有两个数据集,一个在另一个上。我想为它们使用不同的手动色带。但是,scale_color_manual同时更改两个数据集的颜色。

set.seed(123)
data1 <- data.frame(x=rnorm(25,2,.5),y=rnorm(25,2,1),z=factor(sample(c(1:3),25,replace=TRUE)))
data2 <- data.frame(x=rnorm(25,4,1),y=rnorm(25,2,.5),z=factor(sample(c(1:3),25,replace=TRUE)))

col1 <- c("lightblue","blue","darkblue") #corresponding to levels of 1...3 in data1
col2 <- c("lightgreen","green","darkgreen") #corresponding to levels of 1...3 in data2

ggplot(mapping=aes(x=x,y=y,color=z,size=5)) +
  geom_point(data=data1) +
  scale_color_manual(values=col1)+
  geom_point(data=data2) +
  scale_color_manual(values=col2)

实际结果区域全部为绿色。但是,左侧更多的点应该是蓝色的。

1 个答案:

答案 0 :(得分:1)

ggplot没有内置选项,但是您可以准备数据以实现它:

data1$color1 <- col1[data1$z]
data2$color2 <- col2[data2$z]

ggplot()  +
  geom_point(data=data1, aes(x=x,y=y,color=color1), size=5) +
  geom_point(data=data2, aes(x=x,y=y,color=color2), size=5) +
  scale_color_identity() 

enter image description here

相关问题