web-dev-qa-db-ja.com

デフォルトのスケール勾配ggplot2を逆にする

私は初心者です。ヒートマップを設計しようとしています。これは私のコードです:

_ggplot(Gd, aes(Qcountry, Q6_1_Q6d), order = TRUE) +
  geom_tile(aes(fill = prob), colour = "white") +
  theme_minimal() +
  labs( y = "Main reason for mobility", x = "Country") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.3)) +
  scale_fill_gradient(name = "(%)")
_

これは完璧なチャートを生成しますが、私の問題は、低レベルが濃い青で、高い値が水色であるということです。これは直感的ではありません。最も一般的な方法は、rev()を使用することです。しかし、私の場合、私はその方法がわかりません。それで、このデフォルトスケールを逆にすることは可能ですか? これは凡例です

他の質問は、1つの色だけでスケールグラデーションを作成する方法はありますか。つまり、_scale_fill_gradient/scale_fill_gradientn_は低色と高色を設定する必要があります_(low = "", high = "")_そして私は青を赤に変更したいと思います。

ご支援ありがとうございます。

12
Tito Sanz

?scale_colour_gradientは、low = "#132B43"およびhigh = "#56B1F7"のデフォルト値を示しています。

それらを切り替えるだけです:

ggplot(faithfuld, aes(waiting, eruptions)) +
    geom_raster(aes(fill = density)) +
    scale_fill_continuous(high = "#132B43", low = "#56B1F7")

enter image description here

個人的には、これはデフォルトよりも直感的ではないと思います。

6
Axeman

RColorBrewer(link) ライブラリのカラーパレットを使用して、カラーグラデーションの方向を割り当てることができます

library(RColorBrewer)
library(ggplot2)

ggplot(df, aes(x, y)) +
  geom_tile(aes(fill = z, width = w), colour = "grey50") +
  scale_fill_distiller(palette ="RdBu", direction = -1) # or direction=1


# data
  df <- data.frame( x = rep(c(2, 5, 7, 9, 12), 2),
                    y = rep(c(1, 2), each = 5),
                    z = rep(1:5, each = 2),
                    w = rep(diff(c(0, 4, 6, 8, 10, 14)), 2))

enter image description here

3
rafa.pereira