Hacer que cuando haya un eje que sólo tenga un elemento ordene el otro.

This commit is contained in:
Costa
2022-03-24 12:17:32 +01:00
parent bd98a08c31
commit e57141aa22
+9 -1
View File
@@ -20,7 +20,15 @@ ggheatmap<-function(df, x=NULL, y=NULL, value=NULL, grouping="mean", exclude_gro
if (length(unique(df$VarX)) > 1 & length(unique(df$VarY)) > 1){
order<-clustsort(df %>% spread(VarY,Value) %>% select(!all_of(exclude_group)) %>% as.data.frame)
}else{
order<-list("x"=df %>% pull(VarX) %>% unique, "y"=df %>% pull(VarY) %>% unique)
order<-list()
if (length(unique(df$VarX)) > 1){
xhclust<-clustsort(df %>% spread(VarY,Value) %>% select(!all_of(exclude_group)) %>% as.data.frame)
order[["x"]]<-pull(xhclust, 1)[hclust(dist(xhclust %>% select(-1)))$order]
}else{order[["x"]]<-df %>% pull(VarX) %>% unique}
if (length(unique(df$VarY)) > 1){
yhclust<-clustsort(df %>% spread(VarY,Value) %>% select(!all_of(exclude_group)) %>% as.data.frame)
order[["y"]]<-colnames(yhclust)[2:ncol(yhclust)][hclust(dist(t(yhclust %>% select(-1))))$order]
}else{order[["y"]]<-df %>% pull(VarY) %>% unique}
}