ggplot boxplot + fill + color brewer spectrum

时间:2013-11-02 15:36:03

标签: r ggplot2

我似乎无法使用颜色brewer以连续值填充一个boxplot,我知道它必须只是一个简单的语法交换,因为我可以得到轮廓根据连续值调整框。这是我正在使用的数据:

data <- data.frame(
    value = sample(1:50),
    animals = sample(c("cat","dog","zebra"), 50, replace = TRUE),
    region = sample(c("forest","desert","tundra"), 50, replace = TRUE)
)

我想制作一个镶嵌的箱形图,按中间“值”排序,每个框的颜色填充深度增加“值”(我知道这是多余的,但为了示例,请耐心等待)

(订购数据):

orderindex <- order(as.numeric(by(data$value, data$animals, median)))
data$animals <- ordered(data$animals, levels=levels(data$animals)[orderindex])

如果我用面板创建箱线图,我可以调整轮廓的颜色:

library(ggplot2)
first <- qplot(animals, value, data = data, colour=animals)
second <- first + geom_boxplot() + facet_grid(~region)
third <- second + scale_colour_brewer()
print(third)

但是我想做我对轮廓所做的事情,而是使用每个框的 fill (因此每个框随着“值”增加而变暗)。我认为这可能是将“scale_colour_brewer()”参数放在geom_boxplot的审美参数中,即

second <- first + geom_boxplot(aes(scale_colour_brewer())) + facet_grid(~region)

但这似乎没有办法。我知道这是关于这个“scale_colour_brewer”论点的定位问题;我只是不知道它在哪里!

(这里有一个类似的问题,但它不是相当我正在寻找的东西,因为盒子的颜色不会随着某个连续值的光谱/渐变而增加;它看起来像这些值基本上是因素:Add color to boxplot - "Continuous value supplied to discrete scale" error,以及带有汽车包的ggplot站点的示例: 当我将“填充”设置为“值”时,http://docs.ggplot2.org/0.9.3.1/geom_boxplot.html似乎不起作用...我收到错误:     单位出错(tic_pos.c,“mm”):'x'和'units'的长度必须大于&gt; 0) )

1 个答案:

答案 0 :(得分:2)

如果您需要为箱图设置填充,则代替color=animals使用fill=animal,并以同样的方式将scale_color_brewer()替换为scale_fill_brewer()

qplot(animals, value, data = data, fill=animals)+ 
  geom_boxplot() + facet_grid(~region) + scale_fill_brewer()

enter image description here