Как я могу заказать тепловую карту ggplot на основе значения столбца? - PullRequest
2 голосов
/ 20 мая 2019

Следующий фрагмент R

library(ggplot2)
library(reshape2)

data <- data.frame(
          item  = c('foo', 'bar', 'baz'),
          val_1 = c(   7 ,    9 ,    3 ),
          val_2 = c(   1 ,    2 ,    3 )
        );

data

data$tot = data$val_1 + data$val_2;

data.molten = melt(data);

ggplot(
   data = data.molten,
   aes(x = variable, y = item ))  +
   geom_tile(aes(fill  = value))  +
   geom_text(aes(label = value))

производит

enter image description here

Можно ли упорядочить его по убыванию значения tot, чтобы строка с bar находилась вверху, а baz - снизу.

1 Ответ

5 голосов
/ 20 мая 2019

Добавить эту строку:

data$item <- reorder(data$item,data$tot)

до melt ing.

Канонический вопрос StackOverflow по этой теме: здесь , и ответ в основном всегда "установить уровни факторов в желаемом порядке", но как вы это делаете на практике, может варьироваться от случая к случаю в разных направлениях это немного выходит за рамки одного ответа StackOverflow.

...