Как использовать две разные цветовые шкалы? - PullRequest
1 голос
/ 04 июня 2019

У меня есть два набора данных, которые я строю один над другим. Я хочу использовать разные ручные цветовые шкалы для них. Однако 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 Ответ

1 голос
/ 04 июня 2019

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

...