如何为上下值的散点图提供颜色范围

时间:2016-09-26 14:53:02

标签: r ggplot2 scatter-plot

我想根据值>为我的情节提供不同的颜色(颜色范围)。 5和值< -5和它们之间的值。与附图一样,在图像中只有2种颜色,超过5 /少于5,它们之间的值。

我的代码是:

ggplot(data, aes(S1, S2, color=abs(S1-S2)>5 )) +geom_point()+ smoother

Scatter plot image

2 个答案:

答案 0 :(得分:1)

以下是在ggplot

之前创建与颜色组对应的新变量的解决方案
set.seed(1)
df = data.frame(x = rnorm(1000,1,10))
df$y = df$x + rnorm(1000,1,5)

df$col = NA
df$col[(df$x - df$y) > 5] = "g1"
df$col[(df$x - df$y) < 5 & (df$x - df$y) > -5] = "g2"
df$col[(df$x - df$y) < -5] = "g3"

ggplot(df, aes(x, y, color = col)) + geom_point() 

enter image description here

EDIT
如果要标记具有观察次数的图例,请选择颜色:

library(plyr)
df_labels = ddply(df, "col", summarise, n = n())

ggplot(df, aes(x, y, color = col)) + geom_point() + 
scale_color_manual(labels = df_labels$n, values = c("g1" = "red", "g2" = "blue", "g3" = "green"))

enter image description here

答案 1 :(得分:0)

确保您的颜色计算得到3个值的结果:

ggplot(data, aes(S1, S2, color=factor(ifelse(S1-S2>5,1,ifelse(S2-S1>5,2,4)) , labels = c("less","more","same")))) +geom_point()

或者在绘图之前在脚本的另一个步骤中进行此操作。