Legend from continue to discrete values

Dear all,
I have a continuos variable (a ratio ranging [0;4]) and I want to color different region of a map based on the ratio of each given region. So far so good.

ggplot(data=region,aes(x=long,y=lat, group=group, fill=ratio))+geom_polygon(color="gray60", size=0.15)+scale_fill_gradient(low="yellow", high="purple")

R plot the legend as a rectangle from yellow to purple. I would like to have a legend that shows only few values, as it they were discrete (i.e. a yellow box for ratio=0, a orangish box for ratio=2 and a purple box for ratio=4).

How should I do?

Thank you in advance,


There's an open issue to implement what I think you're referring to in ggplot2, as well as a couple of possible implementations in the thread (e.g. see Claus Wilke's here).

You can see Claus has implemented something similar-ish (discretized gradient scale) for value-suppressing uncertainty palettes in the multiscales package, but for a more complex legend

Could you please turn your example into a self-contained reprex (short for reproducible example)? It will help us help you if we can be sure we're all working with/looking at the same stuff.


If you've never heard of a reprex before, you might want to start by reading the tidyverse.org help page. The reprex dos and don'ts are also useful.

There's also a nice FAQ on how to do a minimal reprex for beginners, below:

What to do if you run into clipboard problems

If you run into problems with access to your clipboard, you can specify an outfile for the reprex, and then copy and paste the contents into the forum.

reprex::reprex(input = "fruits_stringdist.R", outfile = "fruits_stringdist.md")

For pointers specific to the community site, check out the reprex FAQ.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.