5

2つの異なるfacet_gridsの異なる色を取得するのに苦労しています。

これが私の簡単な例です:

df <- data.frame(x = rep(1:20, each=20), y= rep(1:20, 20),
             val = sample(0:1,400, replace=TRUE),
             facet_grid = c(rep("A", 200), rep("B", 200)))
colors <- c(1,2)
ggplot(df, aes(x = x, y = y)) +
    geom_tile(aes(fill = val)) +
    facet_grid(. ~ facet_grid, scales = "free") +
    scale_fill_gradient(limits=c(0,1), low=brewer.pal(11, "RdYlGn")[colors][1],  
                        high="grey30")

使用している標準色を上書きするscale_fill_gradient関数と一緒に関数を使用しています。brewer.palただし、私が達成しようとしていることは、同じ色(grey30)を使用する必要がある1の値に対して2つの異なるfacet_gridsに設定されています。たとえば、最初のfacet_grigで値が0の場合は、赤を使用し、2番目のfacet_gridでは緑を使用する必要があります。

誰かが私にそれを達成する方法についてのヒントを与えることができますか?

欲しいものに近い別の例を作成しましたが、なぜ機能しないのかわかりscale_fill_identityません。そのために、データフレームを少し変更して、値が4つの異なる値になるようにしました。

df <- data.frame(x = rep(1:20, each=20), y= rep(1:20, 20),
             val = c(sample(0:1,200, replace=TRUE), sample(2:3,200, replace=TRUE)),
         facet_grid = c(rep("A", 200), rep("B", 200)))

ggplot(df, aes(x = x, y = y)) +
    geom_tile(aes(fill = val)) +
    facet_grid(. ~ facet_grid, scales = "free")

ggplot(df, aes(x = x, y = y)) +
    geom_tile(aes(fill = val)) +
    facet_grid(. ~ facet_grid, scales = "free")

scale_fill_identity(labels=letters[1:4], breaks=c("red","blue","green","brown")) +

最初のggplotは、私が望むものをほぼ提供してくれます。2つの異なるfacet_gridsの4つの異なる色。を使用して4色を変更しようとしましscale_fill_identityたが、プロットに表示されるのは、上記で指定したものではなく、黒/白と赤/緑の4つの異なる色です。

4

1 に答える 1

6

これを試して

ggplot(df, aes(x = x, y = y),colour=val) +
  geom_tile(aes(fill = factor(val))) +
  facet_grid(. ~ facet_grid, scales = "free")+
  scale_fill_manual(labels=letters[1:4], values=c("red","blue","green","brown")) 
于 2012-08-30T09:38:24.390 に答える