我想在热图中使用以下数据创建热图:
IND1 IND2 FREQ
Alix Bob 3
Bob Crit 5
Alix Alix 7
Fang Fang 2
Alix Crit 1
Crit Dix 9
Dix Alix 2
Bob Fang 3
Bob Bob 1
我还想根据个人的类型订购行和列。所以,我在数据中添加了两列,使其看起来如下:
IND1 IND2 FREQ IND1.TYPE IND2.TYPE
Alix Bob 3 Dog Cat
Bob Crit 5 Cat Dog
Alix Alix 7 Dog Dog
Fang Fang 2 Dog Dog
Alix Crit 1 Dog Dog
Crit Dix 9 Dog Cat
Dix Alix 2 Cat Dog
Bob Fang 3 Cat Dog
Bob Bob 1 Cat Cat
基本上,我希望将狗组合在一起,并将Cats沿X轴和Y轴组合在一起。我使用this question中的代码进行排序:
tr$IND1<-factor(tr$IND1, levels=(tr$IND1)[order(tr$IND1.TYPE)])
tr$IND2<-factor(tr$IND2, levels=(tr$IND2)[order(tr$IND2.TYPE)])
热图的代码如下:
ggplot(tr, aes(IND1, IND2)) + geom_tile(aes(fill = FREQ), colour = "white") + scale_fill_gradient(low = "blue", high = "red")
虽然狗和猫在他们各自的团体中被命令,但我也希望他们在各自的团体中按字母顺序排列。所以,我希望行和列看起来像:
Fang
Crit
Alix
Dix
Bob
Bob Dix Alix Crit Fang
我认为默认情况下,“订单”会根据this question上接受的答案按字母顺序在每个组内排序。但是,在这种情况下,这似乎不起作用。
所以,我想知道最有效的排序方法,以获得所需的输出。