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.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 18:42 schreef Rasmus Liland <jral at 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 <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
>
> ______________________________________________
> 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]]