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. Please help me to solve this problem! Thank you! Bests! Catalin -- - - Catalin-Constantin ROIBU Lecturer PhD, Forestry engineer Forestry Faculty of Suceava Str. Universitatii no. 13, Suceava, 720229, Romania office phone +4 0230 52 29 78, ext. 531 mobile phone +4 0745 53 18 01 FAX: +4 0230 52 16 64 silvic.usv.ro <http://www.usv.ro/> [[alternative HTML version deleted]]
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)) Best regards, 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.onkelinx at 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 12:02 schreef Catalin Roibu <catalinroibu at 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. > > > Please help me to solve this problem! > > Thank you! > > > Bests! > > Catalin > > > > > -- > > - > - > Catalin-Constantin ROIBU > Lecturer PhD, Forestry engineer > Forestry Faculty of Suceava > Str. Universitatii no. 13, Suceava, 720229, Romania > office phone +4 0230 52 29 78, ext. 531 > mobile phone +4 0745 53 18 01 > FAX: +4 0230 52 16 64 > silvic.usv.ro <http://www.usv.ro/> > > [[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]]
On 2020-07-07 12:44 +0200, Thierry Onkelinx via R-help wrote:> Op di 7 jul. 2020 om 12:02 schreef Catalin Roibu <catalinroibu at 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