在R ggplot2中更改单个色点

时间:2018-06-07 16:46:01

标签: r ggplot2

我想根据累积概率将点图的颜色更改为淡入淡出。我正在使用hsv获取每个单独数据点所需的颜色代码列表。但是,我无法将这些颜色分配给绘图。到目前为止,我在网上发现的任何东西都是根据群体分配颜色。

以下是示例:

library(data.table)
library(ggplot2)

#sample of cumulative probabilities
wave <- data.table(
c(1, 1, .9, .6, .2, .02, 0, 0),
c(1, 1, 1, .8, .6, .42, .1, 0), 
c(1, 1, 1, .9, .7, .4, .34, .1))

#set up for dot plot 
dot <- data.table(rep(c(1:NROW(wave)), NCOL(wave)), 
              rep(colnames(wave), each = NROW(wave)))


#trying to use saturation in hsv to get prob dependent color fades
fade <- hsv( .9, rev(as.matrix(wave)), .55) 


 p<-ggplot(
     dot, aes(x=V2, y=V1)) + 
     geom_dotplot(binaxis='y', stackdir='center', 
          stackratio= .1, dotsize=.7
                      )


#  The following lines don't work:

p+scale_colour_manual(values = fade)
p
p+scale_fill_manual(values = fade)
p

任何帮助将不胜感激!谢谢。

1 个答案:

答案 0 :(得分:1)

如果我理解正确的话,对于每个点,你都有一个相关的颜色,它存储在自己的矢量fade中,并且你想要绘制点,使得每个点都用相关颜色。

在那种情况下:

names(fade)<-fade
ggplot(dot,aes(x=V2,y=V1,fill=fade))
   +geom_dotplot(binaxis='y',stackdir='center',stackratio=.1,dotsize=.7)
   +scale_fill_manual(values=fade)

enter image description here

基本上,这会将您的分组变量设置为十六进制颜色。

请注意,您也可以使用geom_point轻松完成此操作:

dot$probability<-do.call(c,wave)
ggplot(dot,aes(x=V2,y=V1,color=probability))
    +geom_point(size=3)
    +scale_color_gradient(low="#8C0054",high="#8C8C8C")

enter image description here