8
ggplotに凡例を表示させ、範囲に値がない場合でも因子の色を修正しようとしています。値がないときにすべてのカテゴリを表示するようにggplotの凡例を表示する
以下の再現可能な例では、図1は、変数X1の各範囲に少なくとも1つの値を持ち、必要に応じてプロットします。各凡例ラベルがプロットされ、目的の色と一致します。
例2では、変数Y1には作成される各範囲の値がありません。その結果、プロットは最初の4凡例ラベルのみを表示し、最初の4色を使用します。私はすべて私を試してみました
そのCAT1値は常に赤になるようggplotは、CAT2値は常に青の色を8つのすべての凡例ラベルを表示し、修正するために強制的にこの図をプロットする方法はあります、など成功なしに考えることができます。
- 再現性の例 -
set.seed(45678)
dat <- data.frame(Row = rep(x = LETTERS[1:5], times = 10),
Col = rep(x = LETTERS[1:10], each = 5),
Y = rnorm(n = 50, mean = 0, sd = 0.5),
X = rnorm(n = 50, mean = 0, sd = 2))
library(ggplot2)
library(RColorBrewer)
library(dplyr)
dat <- dat %>% mutate(Y1 = cut(Y, breaks = c(-Inf,-3:3,Inf)),
X1 = cut(X, breaks = c(-Inf,-3:3,Inf)))
# Figure 1
ggplot(data = dat, aes(x = Row, y = Col)) +
geom_tile(aes(fill = X1), color = "black") +
scale_fill_manual(values = c("red", "blue", "green", "purple", "pink", "yellow", "orange", "blue"),
labels = c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat7", "cat8"))
# Figure 2
ggplot(data = dat, aes(x = Row, y = Col)) +
geom_tile(aes(fill = Y1), color = "black") +
scale_fill_manual(values = c("red", "blue", "green", "purple", "pink", "yellow", "orange", "blue"),
labels = c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat7", "cat8"))
優れたを参照してください。どうもありがとうございます! – learnmorer