Don't use the cut() function. ir. Thierry Onkelinx Statisticus / Statistician
Vlaamse Overheid / Government of Flanders INSTITUUT VOOR NATUUR- EN BOSONDERZOEK / RESEARCH INSTITUTE FOR NATURE AND FOREST Team Biometrie & Kwaliteitszorg / Team Biometrics & Quality Assurance thierry.onkel...@inbo.be Havenlaan 88 bus 73, 1000 Brussel www.inbo.be /////////////////////////////////////////////////////////////////////////////////////////// To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey /////////////////////////////////////////////////////////////////////////////////////////// <https://www.inbo.be> Op di 7 jul. 2020 om 18:42 schreef Rasmus Liland <j...@posteo.no>: > On 2020-07-07 12:44 +0200, Thierry Onkelinx via R-help wrote: > > Op di 7 jul. 2020 om 12:02 schreef Catalin Roibu <catalinro...@gmail.com > >: > > > > > > Dear R users, > > > > > > I want to create a plot for multiple > > > sites and to keep the same color > > > range scale (the correlation values > > > range from -0.5 to 0.7 for all data, > > > but I have sites with different min > > > and max). > > > > > > I used this code: > > > cols<-c("#0288D1", "#039BE5", "#03A9F4","#29B6F6", "#4FC3F7", > "#FFCDD2", > > > "#E57373", "#F44336", "#E53935", "#D32F2F", "#C62828", "#B71C1C") > > > zCuts <-seq(-.5, 0.6, by = 0.1) > > > p<-ggplot(df1, aes(x=as.factor(spei), y=as.factor(month), fill = > cut(cor, > > > zCuts))) + > > > geom_tile() + > > > scale_fill_manual(values=cols) > > > > > > but for each site the scale color is different. > > > > > > > Dear Catalin, > > > > use scale_fill_gradient() and set fixed limits > > > > ggplot(df1, aes(x=as.factor(spei), y=as.factor(month), fill = cut(cor, > > zCuts))) + > > geom_tile() + > > scale_fill_gradient(limits = c(-0.7, 0.7)) > > Hmm ... what might df1 have looked like > ... creating a df with columns spei, > month, cor, and zCuts containing 1:5 > doesn't do the trick ... > > df1 <- > data.frame( > spei=1:5, > month=1:5, > cor=1:5, > zCuts=1:5 > ) > cols <- > c("#0288D1", "#039BE5", > "#03A9F4","#29B6F6", "#4FC3F7", > "#FFCDD2", "#E57373", "#F44336", > "#E53935", "#D32F2F", "#C62828", > "#B71C1C") > zCuts <- seq(-.5, 0.6, by=0.1) > filename <- "/tmp/catalin1.png" > width <- 800 > height <- 600 > res <- 150 > png(filename=filename, width=width, height=height, res=res) > mapping <- ggplot2::aes( > x = as.factor(spei), > y = as.factor(month), > fill = cut(cor, zCuts) > ) > p <- ggplot2::ggplot(df1, mapping=mapping) + > ggplot2::geom_tile() + > ggplot2::scale_fill_gradient(limits = c(-0.7, 0.7)) > # ggplot2::scale_fill_manual(values=cols) > p > dev.off() > > ... which only produces the error > > Error: Discrete value supplied to continuous scale > Execution halted > > V > > r > > ______________________________________________ > R-help@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]] ______________________________________________ R-help@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.