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",
"#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 =
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