ggheatmap<-function(df, x=NULL, y=NULL, value=NULL, grouping="mean"){ if (is.null(x)){x=colnames(df)[1]} if (is.null(y)){y=colnames(df)[2]} if (is.null(value)){value=colnames(df)[3]} df<-rename(df, "VarX"=all_of(x), "VarY"=all_of(y), "Value"=all_of(value)) if (grouping == "mean"){ df<-df %>% group_by(VarX,VarY) %>% summarise(Value=mean(Value)) } if (grouping == "median"){ df<-df %>% group_by(VarX,VarY) %>% summarise(Value=median(Value)) } order<-clustsort(df %>% spread(VarY,Value) %>% as.data.frame) df %>% ggplot(aes(VarX, VarY, fill=Value))+ scale_x_discrete(limits=order$x)+ scale_y_discrete(limits=order$y)+ labs(x=x, y=y)+ theme_heatmap() }