2017-02-27 68 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' –