我可以调整 scale_color_brewer 的下限吗?

9

我有一些分类数据想要使用color brewer进行可视化。但是我发现很难看到非常浅的低值。是否有一种方法可以裁剪掉这些低值或者设置比例尺的下限呢?

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()

有没有更好的方法来做到这一点?目前我只看到了定性量表,它们没有排序,或者连续量表,不能应用于离散数据。如果这是唯一的途径,我知道手动刻度也可以。


一个简单的可能的替代方法是使用一个带有填充区域轮廓的绘图符号,例如 pch = 21(请参见这里)。然后您可以使用 fill 美学。 ggplot(data.frame(x = 1:6, y = 10:15, w = letters[1:6]), aes(x, y, fill = w)) + geom_point(pch = 21,size = 5)+ scale_fill_brewer(type = "seq", palette = 1) + theme_bw() - Henrik
3个回答

7

您不能仅设置下限。但是您可以使用带有比所需颜色更多的调色板,并将最亮的颜色映射到未使用的级别。以下是一个具有9个级别的示例:

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])

是的!这就是我一直在想的解决办法。谢谢! - Tom
请您详细说明一下在这里的“limits”参数中正在做什么?全大写的“LETTERS”是从哪里来的?如何将其推广到一般情况,即我不是在绘制“letters”时使用? - lauren.marietta

4

虽然@shadow的回答对我有所帮助,但我需要使用的啤酒酿造调色板(连续)只有9个值,而我需要绘制8个分类变量!即使仅去除第9个和最浅的调色板颜色,也无法使整个颜色方案完全可见。

因此,我使用了colorRampPalette()函数,该函数允许您将现有的颜色调色板扩展为连续函数:

library(RColorBrewer)
ggplot(data.frame(x=1:6, y=10:15, w=letters[1:6]), aes(x, y, color=w)) + 
  geom_point() + theme_bw() + 
  scale_color_manual(values = colorRampPalette(brewer.pal(9, "YlGnBu"))(12)[6:12])

所以在这种情况下,我将“YlGnBu”调色板中的(最大)9种本地颜色映射到12种颜色上,然后只在图中使用最暗的6种颜色([6:12])。


1

我不知道你可以传递任何其他参数来设置比例尺的下限,使用scale_colour_brewer()(请参阅http://docs.ggplot2.org/current/scale_brewer.html

你可以使用ggplot的颜色选项来获得更多的灵活性,它们采用以下格式:scale_xxx_yyy,例如scale_fill_discrete(),它需要更多的参数。请参见http://docs.ggplot2.org/current/scale_hue.html,但还要注意其他选项(“另请参阅”)。

对于您所请求的序数数据,scale_fill_continuous可能是一个很好的起点。

例如,您可以从http://colorbrewer2.org/中传递颜色,并选择更合适的起始颜色。唯一的问题是您需要使用诸如http://serennu.com/colour/hsltorgb.php这样的工具将rgb / hex值转换为HSL值。


谢谢@Phil。我尝试了scale_colour_discrete,但找不到一种方法来处理有序分类值(即在某种梯度上)。你知道有什么办法吗?如果我只是选择值,那么基本上又回到了手动操作。 - Tom
我已经更新了我的答案。@shadow的答案更适用于您的具体要求,但scale_xxx_yyy选项始终值得考虑。 - Phil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接