Error: Continuous value supplied to discrete scale

13,916

If you want to supply colours manually, you need to map fill to a factor variable.

ggplot(df, aes(x=x, y=y))+
  geom_tile(aes(fill=factor(value)), colour="white")+
  scale_fill_manual(name = "Values", values=setNames(colors, 1:8))

enter image description here

Share:
13,916
David Z
Author by

David Z

Updated on June 13, 2022

Comments

  • David Z
    David Z almost 2 years

    I'm trying to make a heat plot for a discrete outcomes (each value uses a single color) such that:

    df<-data.frame(x=rep(LETTERS[1:10], each=10), 
                   y=rep(1:10,10),
                   value=sample(1:8, 100,replace=T))
    colors<-c("green", "lightyellow", "yellow", "orange", "orangered", "red", "darkred", "black")
    ggplot(df, aes(x=x, y=y))+
        geom_tile(aes(fill=value), colour="white")+
        #scale_fill_gradient(low="green", high="red")
        scale_fill_manual(values=colors)
    Error: Continuous value supplied to discrete scale
    

    Does somebody know how to fix it and apply the colors variable to the heatmap?