2011-12-05 79 views
15

我創建了一個包含多個組的圖形,並在一行線上繪製了一個geom_boxplot()。 但是,如果透明地對框進行着色,以便可以看到線條,那就太好了。使用透明顏色創建箱形圖ggplot2

下面是一些樣本數據:

x11() 

name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b") 
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3") 
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008") 
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100) 

df <- data.frame(name, class, year, value) 
df 

我畫的圖形搭配:

p1 <- ggplot(df, aes(year, value)) 
p1 <- p1 + geom_line(aes(group=name, size=name),colour="#ff2300",alpha=0.5) +  facet_wrap(~ class, scales = "free_y") 
p1 <- p1 + geom_boxplot(aes(group=name)) 
print(p1) 

而且我的系統上圖例中的線寬顯示不正常。難道我做錯了什麼?提前致謝!

+0

那麼如果你在箱線後畫線,那會是明智的嗎? –

+0

至少對於基本的R繪圖工具,使用2個額外數字來設置顏色將定義透明度。例如。 '#FF230033',透明度從00到FF。 –

回答

25

您可以將alpha參數添加到您的boxplot中。例如:

geom_boxplot(aes(group=name), alpha = 0.8)

會給你

enter image description here

+0

確定 - 最明顯的方法!謝謝! – Seb

5

更改geoms的順序,然後再繪製箱線圖的線條。但是我不認爲你的圖表是有意義的。你爲什麼用名字來改變行的大小?改變線型不是更有意義嗎?我建議不要在free_y方面進行討論,因爲它很難進行比較。

name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b") 
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3") 
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008") 
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100) 

df <- data.frame(name, class, year, value) 
df 
library(ggplot2) 
p1 <- ggplot(df, aes(year, value)) 
p1 <- p1 + geom_boxplot(aes(group=name)) + geom_line(aes(group=name, size=name),colour="#ff2300",alpha=0.5) + 
    facet_wrap(~ class, scales = "free_y") 
+0

+1關於'free_y'的警告。幸運的是,ggplot的背景警告說刻度在刻面之間沒有可比性。 –

+0

嗨,感謝您的提示。你是對的。圖表沒有多大意義!特別是線條大小的參數只是我嘗試的樂趣 - 不應該以這種方式發佈。關於free_y的論點:原始數據包含不同房地產類型的類別,這些類別難以比較(例如租金與價格),所以我認爲它沒關係。 – Seb