создать коробку с прозрачным цветом ggplot2 - PullRequest
17 голосов
/ 05 декабря 2011

Я создаю графику с несколькими группами и строю график 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 ]

29 голосов
/ 05 декабря 2011

Вы можете добавить alpha аргумент к вашему блокпосту.Например:

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

даст вам

enter image description here

5 голосов
/ 05 декабря 2011

Измените порядок геом, чтобы сначала нарисовать поле, а затем линии.Однако я не думаю, что ваш график имеет смысл.Почему вы используете имя, чтобы изменить размер строки?Разве не имеет смысла менять тип линии?И я советую против 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")
...