用透明色ggplot2创建箱图

时间:2011-12-05 14:56:36

标签: r ggplot2 boxplot

我创建了一个包含多个组的图形,并在一行线上绘制了一个geom_boxplot()。 但是,透明地对盒子进行着色以便可以看到线条会很好。

以下是一些示例数据:

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)

在我的系统上,图例中的线宽未正确显示。难道我做错了什么?提前谢谢!

2 个答案:

答案 0 :(得分:29)

您可以在箱图中添加alpha参数。例如:

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

会给你

enter image description here

答案 1 :(得分: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")