Тепловая карта на основе 3 переменных - PullRequest
1 голос
/ 27 января 2020

У меня есть этот фрейм данных:

     var1 var2 value
1    A    X    0
2    B    X    1
3    C    X    1
4    A    Y    1
5    B    Y    0
6    C    Y    0

, и я хотел бы нарисовать var1 на оси X и var2 на оси Y, и отобразить значение как красный, если оно равно 1, и белый, если он равен нулю. В данном случае, вроде:

  A     B     C
X white red   red
Y red   white white

До сих пор я пробовал с:

ggplot(dataframe, aes(var1, var2, fill = value)) + 
  geom_raster() +
  coord_fixed(ratio = 1)  + 
  scale_fill_gradientn(colours = c("white", "red"))

, но сюжет неверен:

enter image description here

1 Ответ

1 голос
/ 27 января 2020
df <- tribble(
  ~var1, ~var2, ~value,
    "A",    "X",    0,
    "B",    "X",    5,
    "C",    "X",    4,
    "A",    "Y",    1,
    "B",    "Y",    2,
    "C",    "Y",    0.5,
) 

df %>%
    ggplot(aes(var1, var2, fill = value)) +
    geom_raster() +
    scale_fill_gradient(low = "white", high = "red")

enter image description here

...