Browse Source

Añadida a la función ggheatmap la posibilidad de colorear las líneas.

main
Costa 2 years ago
parent
commit
bbaa881479
2 changed files with 12 additions and 7 deletions
  1. +10
    -6
      R/ggheatmap.R
  2. +2
    -1
      man/ggheatmap.Rd

+ 10
- 6
R/ggheatmap.R

@ -1,10 +1,10 @@
ggheatmap<-function(df, x=NULL, y=NULL, value=NULL, grouping="mean", exclude_group=NULL, scale="none"){
ggheatmap<-function(df, x=NULL, y=NULL, value=NULL, grouping="mean", exclude_group=NULL, scale="none",color="#FFFFFF00"){
if (is.null(x)){x=colnames(df)[1]} if (is.null(x)){x=colnames(df)[1]}
if (is.null(y)){y=colnames(df)[2]} if (is.null(y)){y=colnames(df)[2]}
if (is.null(value)){value=colnames(df)[3]} if (is.null(value)){value=colnames(df)[3]}
df<-rename(df, "VarX"=all_of(x), "VarY"=all_of(y), "Value"=all_of(value)) df<-rename(df, "VarX"=all_of(x), "VarY"=all_of(y), "Value"=all_of(value))
if (is.null(exclude_group)){ if (is.null(exclude_group)){
df<-df %>% group_by(VarX,VarY) df<-df %>% group_by(VarX,VarY)
}else{ }else{
@ -17,7 +17,7 @@ ggheatmap<-function(df, x=NULL, y=NULL, value=NULL, grouping="mean", exclude_gro
df<-df %>% summarise(Value=median(Value)) %>% ungroup df<-df %>% summarise(Value=median(Value)) %>% ungroup
} }
order<-clustsort(df %>% spread(VarY,Value) %>% select(!all_of(exclude_group)) %>% as.data.frame) order<-clustsort(df %>% spread(VarY,Value) %>% select(!all_of(exclude_group)) %>% as.data.frame)
if (scale != "none"){ if (scale != "none"){
if (scale == "rows"){ if (scale == "rows"){
cols<-unique(df$VarY) cols<-unique(df$VarY)
@ -32,12 +32,16 @@ ggheatmap<-function(df, x=NULL, y=NULL, value=NULL, grouping="mean", exclude_gro
df<-gather(sca.df, VarX, Value, all_of(cols)) df<-gather(sca.df, VarX, Value, all_of(cols))
} }
} }
df$VarX<-factor(df$VarX, levels=order$x) df$VarX<-factor(df$VarX, levels=order$x)
df$VarY<-factor(df$VarY, levels=order$y) df$VarY<-factor(df$VarY, levels=order$y)
df %>% df %>%
ggplot(aes(VarX, VarY, fill=Value))+ ggplot(aes(VarX, VarY, fill=Value))+
labs(x=x, y=y)+ labs(x=x, y=y)+
theme_heatmap()
geom_tile(aes(fill=Value), color=color)+
scale_fill_gradientn(colors=col2(200))+
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust=0.5),
panel.background = element_blank(),
axis.ticks = element_blank())
} }

+ 2
- 1
man/ggheatmap.Rd

@ -2,7 +2,7 @@
\alias{ggheatmap} \alias{ggheatmap}
\title{ggheatmap} \title{ggheatmap}
\usage{ \usage{
ggheatmap(df, x=NULL, y=NULL, value=NULL, grouping="mean", exclude_group=NULL, scale="none")
ggheatmap(df, x=NULL, y=NULL, value=NULL, grouping="mean", exclude_group=NULL, scale="none", color="#FFFFFF00")
} }
\arguments{ \arguments{
\item{df}{A data frame in "long" format.} \item{df}{A data frame in "long" format.}
@ -12,6 +12,7 @@ ggheatmap(df, x=NULL, y=NULL, value=NULL, grouping="mean", exclude_group=NULL, s
\item{grouping}{The function that will be used to group if there is more than one observation for each X-Y combination. "mean" or "median" are posible, defaulting to "mean".} \item{grouping}{The function that will be used to group if there is more than one observation for each X-Y combination. "mean" or "median" are posible, defaulting to "mean".}
\item{exclude_group}{If you want to exclude columns from grouping, you can introduce a character vector here. Useful if you want to facet the plot.} \item{exclude_group}{If you want to exclude columns from grouping, you can introduce a character vector here. Useful if you want to facet the plot.}
\item{scale}{Escales (z-score) by "rows" or "cols" if diferent of "none" (default).} \item{scale}{Escales (z-score) by "rows" or "cols" if diferent of "none" (default).}
\item{color}{The color of the lines of geom_tile (the border). By default, its transparent.}
} }
\description{ \description{
Generates a heatmap using ggplot for a dataframe. Generates a heatmap using ggplot for a dataframe.

Loading…
Cancel
Save