Hello,
Note that the midpoint argument can make a big difference. In the code
below try commenting out the line where the default is changed.
f <- function(x){
(x - min(x))/(max(x) - min(x))
}
library(ggplot2)
df1 <- iris[3:5]
names(df1)[1:2] <- c("x", "y")
df1$z <- ave(df1$y, df1$Species, FUN = f)
ggplot(df1) +
geom_point( aes(x, y, color = z) ) +
scale_color_gradient2(low = "red",
mid = "yellow",
high = "blue",
midpoint = 0.5
)
Hope this helps,
Rui Barradas
?s 04:43 de 24/08/20, Jeff Newmiller escreveu:> Check out scale_colour_gradient2()
>
> On August 23, 2020 8:12:06 PM PDT, April Ettington <aprilettington at
gmail.com> wrote:
>> Currently I am using these settings in ggplot to make a gradient from
>> red
>> to blue.
>>
>> geom_point( aes(x, y, color=z) ) +
>> scale_colour_gradient(low = "red",high = "blue") +
>>
>> z is a ratio, and currently I am able to identify which have high and
>> low
>> values, but I'd really like to be able to distinguish which are
>1, <1,
>> or
>> close to 1 by color. It would be great if I could set a middle color
>> in
>> this gradient (eg. green) that is set the the value of 1, even if that
>> is
>> not the exact midpoint between my highest and lowest values. Is there
>> a
>> way to do this in R?
>>
>> Thank you,
>> April
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
Thank you so much! On Mon, Aug 24, 2020 at 5:33 PM Rui Barradas <ruipbarradas at sapo.pt> wrote:> Hello, > > Note that the midpoint argument can make a big difference. In the code > below try commenting out the line where the default is changed. > > > f <- function(x){ > (x - min(x))/(max(x) - min(x)) > } > > library(ggplot2) > > df1 <- iris[3:5] > names(df1)[1:2] <- c("x", "y") > df1$z <- ave(df1$y, df1$Species, FUN = f) > > ggplot(df1) + > geom_point( aes(x, y, color = z) ) + > scale_color_gradient2(low = "red", > mid = "yellow", > high = "blue", > midpoint = 0.5 > ) > > Hope this helps, > > Rui Barradas > > > ?s 04:43 de 24/08/20, Jeff Newmiller escreveu: > > Check out scale_colour_gradient2() > > > > On August 23, 2020 8:12:06 PM PDT, April Ettington < > aprilettington at gmail.com> wrote: > >> Currently I am using these settings in ggplot to make a gradient from > >> red > >> to blue. > >> > >> geom_point( aes(x, y, color=z) ) + > >> scale_colour_gradient(low = "red",high = "blue") + > >> > >> z is a ratio, and currently I am able to identify which have high and > >> low > >> values, but I'd really like to be able to distinguish which are >1, <1, > >> or > >> close to 1 by color. It would be great if I could set a middle color > >> in > >> this gradient (eg. green) that is set the the value of 1, even if that > >> is > >> not the exact midpoint between my highest and lowest values. Is there > >> a > >> way to do this in R? > >> > >> Thank you, > >> April > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> https://stat.ethz.ch/mailman/listinfo/r-help > >> PLEASE do read the posting guide > >> http://www.R-project.org/posting-guide.html > >> and provide commented, minimal, self-contained, reproducible code. > > >[[alternative HTML version deleted]]
Is there a way to set it to 3 color categories instead of a gradient? Like if the color is based on the numbers in a dataframe column, can I make it so anything >1.2 is red, <0.8 is blue, and anything in the middle is green? On Mon, Aug 24, 2020 at 6:28 PM April Ettington <aprilettington at gmail.com> wrote:> Thank you so much! > > > On Mon, Aug 24, 2020 at 5:33 PM Rui Barradas <ruipbarradas at sapo.pt> wrote: > >> Hello, >> >> Note that the midpoint argument can make a big difference. In the code >> below try commenting out the line where the default is changed. >> >> >> f <- function(x){ >> (x - min(x))/(max(x) - min(x)) >> } >> >> library(ggplot2) >> >> df1 <- iris[3:5] >> names(df1)[1:2] <- c("x", "y") >> df1$z <- ave(df1$y, df1$Species, FUN = f) >> >> ggplot(df1) + >> geom_point( aes(x, y, color = z) ) + >> scale_color_gradient2(low = "red", >> mid = "yellow", >> high = "blue", >> midpoint = 0.5 >> ) >> >> Hope this helps, >> >> Rui Barradas >> >> >> ?s 04:43 de 24/08/20, Jeff Newmiller escreveu: >> > Check out scale_colour_gradient2() >> > >> > On August 23, 2020 8:12:06 PM PDT, April Ettington < >> aprilettington at gmail.com> wrote: >> >> Currently I am using these settings in ggplot to make a gradient from >> >> red >> >> to blue. >> >> >> >> geom_point( aes(x, y, color=z) ) + >> >> scale_colour_gradient(low = "red",high = "blue") + >> >> >> >> z is a ratio, and currently I am able to identify which have high and >> >> low >> >> values, but I'd really like to be able to distinguish which are >1, <1, >> >> or >> >> close to 1 by color. It would be great if I could set a middle color >> >> in >> >> this gradient (eg. green) that is set the the value of 1, even if that >> >> is >> >> not the exact midpoint between my highest and lowest values. Is there >> >> a >> >> way to do this in R? >> >> >> >> Thank you, >> >> April >> >> >> >> [[alternative HTML version deleted]] >> >> >> >> ______________________________________________ >> >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> >> https://stat.ethz.ch/mailman/listinfo/r-help >> >> PLEASE do read the posting guide >> >> http://www.R-project.org/posting-guide.html >> >> and provide commented, minimal, self-contained, reproducible code. >> > >> >[[alternative HTML version deleted]]