web-dev-qa-db-ja.com

透明色の箱ひげ図を作成するggplot2

いくつかのグループでグラフィックを作成し、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)

また、私のシステムでは、凡例の線幅が正しく表示されません。私は何か間違ったことをしていますか?前もって感謝します!

18
Seb

箱ひげ図にalpha引数を追加できます。例えば:

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

あなたに与える

enter image description here

29
Roman Luštrik

最初に箱ひげ図を描画し、次に線を描画するように、ジオメトリの順序を変更します。しかし、あなたのグラフは意味をなさないと思います。名前を使用して行のサイズを変更するのはなぜですか?線種を変更する方が理にかなっているのではないでしょうか。また、比較が難しくなるため、ファセットで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")
5
Luciano Selzer