2017-10-10 9 views
0

私は、scale_colour_manualで定義されたカスタムカラーを使用して、ggplot2のgeom_ribbonを埋めようとしています。ここで私はCustom ggplot2 shaded error areas on categorical line plotから取った例である:カテゴリデータに基づくgeom_ribbon塗りつぶしのカスタムカラー

set.seed(12345) 
data <- cbind(rep("A", 100), rnorm(100, 0, 1)) 
data <- rbind(data, cbind(rep("B", 100), rnorm(100, 5, 1))) 
data <- rbind(data, cbind(rep("C", 100), rnorm(100, 10, 1))) 
data <- rbind(data, cbind(rep("D", 100), rnorm(100, 15, 1))) 
data <- cbind(rep(1:100, 4), data) 
data <- data.frame(data) 
names(data) <- c("num", "category", "value") 
data$num <- as.numeric(data$num) 
data$value <- as.numeric(data$value) 
data$upper <- data$value+10 
data$lower <- data$value-10 

data = data[order(data$category, data$num),] 

data$upperLoess = unlist(lapply(LETTERS[1:4], 
           function(x) predict(loess(data$upper[data$category==x] ~ 
                  data$num[data$category==x])))) 
data$lowerLoess = unlist(lapply(LETTERS[1:4], 
           function(x) predict(loess(data$lower[data$category==x] ~ 
                  data$num[data$category==x])))) 

ggplot(data, aes(num, value, colour=category, fill=category)) + 
    scale_colour_manual(values = c("A"="black", "B"="red", "C"="magenta", "D"="green")) + 
    geom_smooth(method="loess", se=FALSE) + 
    geom_ribbon(aes(x=num, ymax=upperLoess, ymin=lowerLoess, fill=category), 
       alpha=0.2) 

間違った色のリボン:明らかに enter image description here

、カテゴリ変数「カテゴリ」のために定義された色が使用されていません。代わりに、デフォルトのパレット(scale_colour_hue?)が使用されます。

ggplot(data, aes(num, value, colour=category, fill=category)) + 
    scale_colour_manual(values = c("A"="black", "B"="red", "C"="magenta", "D"="green")) + 
    geom_smooth(method="loess", se=FALSE) + 
    geom_ribbon(aes(x=num, ymax=upperLoess, ymin=lowerLoess), fill="red", 
       alpha=0.2) 

赤いリボン enter image description here

すべてのアイデアは、その結果:私は、AES外フィル引数を置くことができますか?どうもありがとう!

+0

'color'美的は線/点/ボーダーのためのものである、' fill'美的は、領域(バー、多角形、リボン)のためのものです。 'scale_colour_manual'を' scale_fill_manual'に変更するだけです。 'geom_ribbon'呼び出しで' fill = "red" 'を削除して、スケールを上書きしないようにしてください。 – Gregor

+0

その簡単な解決策をありがとう! –

答えて

0

scale_color_manual引数で定義されているのと同じ色を使ってscale_fill_manualを追加してみてください。

ggplot(data, aes(num, value, colour=category, fill=category)) + 
    scale_colour_manual(values = c("A"="black", "B"="red", "C"="magenta", "D"="green")) + 
    geom_smooth(method="loess", se=FALSE) + 
    geom_ribbon(aes(x=num, ymax=upperLoess, ymin=lowerLoess, fill=category), 
      alpha=0.2) + 
    scale_fill_manual(values = c("A"="black", "B"="red", "C"="magenta", "D"="green")) 

matching colors

関連する問題