Can I adjust the lower limit of scale_color_brewer

2019-06-21 23:41发布

I have ordered categorical data that I would like to use color brewer on. But I have a hard time seeing the very light lower values. Is there a way to either trim off those lower values or set the lower limit in the scale?

ggplot(data.frame(x=1:6, y=10:15, w=letters[1:6]), aes(x, y, color=w)) + 
geom_point()+ scale_color_brewer(type="seq", palette=1) + theme_bw()

Is there a better way to do this? So far I either see qualitative scales that aren't ordered or continuous scales that don't like being applied to discrete data. I'm aware of manual scales if that's the only route.

2条回答
唯我独甜
2楼-- · 2019-06-22 00:02

I'm not aware of any additional arguments you could pass to scale_colour_brewer() to set the lower limit of the scale (see http://docs.ggplot2.org/current/scale_brewer.html)

You have more flexibility with one of ggplot's colour options, which take the format of: scale_xxx_yyy, for example scale_fill_discrete() which take more arguments. See for example http://docs.ggplot2.org/current/scale_hue.html but also note the other options ('see also').

scale_fill_continuous might be a good starting place for ordinal data as you've requested.

You could, for example, pass colours from http://colorbrewer2.org/ to it, and choose a more suitable starting colour. The only problem is you would need to convert the rgb/hex values to HSL values using a tool such as: http://serennu.com/colour/hsltorgb.php

查看更多
霸刀☆藐视天下
3楼-- · 2019-06-22 00:27

You cannot just set a lower limit. But you can use a palette with more colors than needed and map the brightest colors to unused levels. Below is an example with 9 levels:

ggplot(data.frame(x=1:6, y=10:15, w=letters[1:6]), aes(x, y, color=w)) + 
  geom_point() + theme_bw() + 
  scale_color_brewer(type="seq", palette=1, 
                     limits=c(LETTERS[1:3], letters[1:6]), 
                     breaks=letters[1:6])
查看更多
登录 后发表回答