2017-02-27 62 views
1

我想使用color gradient根据y轴上的值对盒图着色。我添加了红色到蓝色渐变的图例,但我不知道如何将这些颜色添加到每个框中。根据值梯度填充盒图颜色

library(ggplot2) 

ggplot(mpg, aes(class, hwy))+ geom_boxplot(aes(colour = hwy))+ 
scale_fill_gradient2(low = "red", high = "blue", 
    midpoint = 25, limit = c(0,50), space = "Lab", 
    name="hwy") 
+0

由于boxplot基于类中的所有值,填充y轴值没有任何意义。 –

回答

2

我不认为你可以。 ggplot documentation只提到了一个因素的着色,我只看到了在x轴上指定的因子。

同样当你想到它时你的陈述是模糊的,盒子里的阴谋决定了什么fill?中间值,上边界,下边界?

更新:

这不完全是你要求的,但它的结束。

mpg %>% 
    group_by(class) %>% 
    mutate(mean.hwy= mean(hwy)) %>% 
    ggplot(aes(class, hwy)) + 
    geom_boxplot() + 
    stat_summary(fun.y= "mean", 
       aes(y=mean.hwy,color=mean.hwy), 
       geom = "point") + 
    scale_color_gradient2(low = "red", 
          high = "blue", 
          midpoint = 25, 
          limit = c(0,50), 
          space = "Lab", 
          name="hwy") 

出于某种原因,我不能让这个中位数,我想这里会更有意义,但希望这将让你更接近你的目标而努力。

+0

我知道,但我的目标是在箱形图上添加一些额外的信息。我提到的代码仅仅是一个例子。 –

+0

我同意@ sgp667,你不能填写一个不存在的值。 boxplot中的每个框代表该类的许多值,没有指向的具体值。 –

+1

@ Geo-sp通过颜色渐变填充不会添加任何信息,但是如果您想要更加连续地查看沿y轴的分布,请考虑查看'geom_violin' –