以下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))
产生
是否有可能使tot
的值降序排列,以使带有bar
的行在顶部,而baz
的行在底部。
答案 0 :(得分:5)
添加此行:
data$item <- reorder(data$item,data$tot)
在melt
之前。
关于此主题的规范StackOverflow问题是here,答案基本上始终是“按所需顺序设置因子水平”,但是在实践中,如何做可能会因情况而异稍微超出了单个StackOverflow答案的范围。