geom_contour_filledカラースケールはブレークに対応していません

Aug 21 2020

異なるプロットが同じスケールになるように、データの範囲よりも大きいブレークの範囲に基づいて、等高線の塗りつぶしを色でプロットしたいと思います。次の例では、青と赤はそれぞれ、より負の値または正の値に対応すると予想されます。ただし、プロットに全範囲が含まれていない場合、geom_contour_filledブレークは認識されますが、カラースケールと一致しません。したがって、正の値はすべて青です。

library(ggplot2)

grid <- expand.grid(x=0:10,y=0:10)
grid$z <- with(grid, x*y) # 0 to 100 does not work as expected # grid$z <- with(grid, 2*x*y-100) # -100 to 100 works as expected

ggplot(grid,aes(x=x,y=y,z=z)) +
  scale_colour_manual( aesthetics = 'fill',
                       values = colorRampPalette(c('blue','white','red'))(20) ) +
  geom_contour_filled( breaks=floor(seq(-100,100, length.out=20)) )

回答

3 AllanCameron Aug 21 2020 at 21:26

drop = FALSEカラースケールに追加する必要があります:

ggplot(grid,aes(x=x,y=y,z=z)) +
  scale_colour_manual( aesthetics = 'fill', drop = FALSE,
                       values = colorRampPalette(c('blue','white','red'))(20) ) +
  geom_contour_filled( breaks=floor(seq(-100,100, length.out=20)) )