私はルックアンドフィールが非常に好きで、ggplot2
ラスターデータを表示するために頻繁に使用します(たとえば、時変降水フィールドのタイムステップにわたるファセットは非常に便利です)。
ただし、連続ラスター値を個別のビンにビン化し、各ビンに単一の色を割り当てることが簡単に可能かどうかはまだ疑問です(多くのGISシステムと同様)。
オプションの引数guide = "legend"
とbreaks
引数を試してみましたscale_fill_gradient
。ただし、これらはグラフ側の凡例にのみ影響しますが、プロットされた値は連続しています。
library(ggplot2)
data <- data.frame(x=rep(seq(1:10),times = 10), y=rep(seq(1:10),each = 10), value = runif(100,-10,10))
ggplot(data = data, aes(x=x,y=y)) +
geom_raster(aes(fill = value)) +
coord_equal() +
scale_fill_gradient2(low = "darkred", mid = "white", high = "midnightblue",
guide = "legend", breaks = c(-8,-4,0,4,8))
私の質問は、主にggplot
、にプロットされたデータを離散化して、グラフの読者が色で表された値について定量的な結論を出すことができるようにする方法です。
次に、scale_fill_gradient2
ゼロまたは別の特定の値を中心とする発散カラーパレット(と同様)を引き続き使用するにはどうすればよいですか?
実際、最良の方法は、基になるデータセットを手動で離散化して変更することです。以下の回答は、joranによる回答に基づいています。
library(ggplot2)
set.seed(1)
data <- data.frame(x = rep(seq(1:10),times = 10),
y = rep(seq(1:10),each = 10),
value = runif(100,-10,10))
# Define category breaks
breaks <- c(-Inf,-3:3,Inf)
data$valueDiscr <- cut(data$value,
breaks = breaks,
right = FALSE)
# Define colors using the function also used by "scale_fill_gradient2"
discr_colors_fct <-
scales::div_gradient_pal(low = "darkred",
mid = "white",
high = "midnightblue")
discr_colors <- discr_colors_fct(seq(0, 1, length.out = length(breaks)))
discr_colors
# [1] "#8B0000" "#B1503B" "#D18978" "#EBC3B9" "#FFFFFF" "#C8C0DB" "#9184B7" "#5B4C93" "#191970"
ggplot(data = data, aes(x=x,y=y)) +
geom_raster(aes(fill = valueDiscr)) +
coord_equal() +
scale_fill_manual(values = discr_colors) +
guides(fill = guide_legend(reverse=T))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加