2017-10-16 9 views
0

J'essaie de tracer mes données Gene Ontology avec le package GOplot, en particulier la fonction GOHeat(). Malheureusement, il y a un problème avec l'affichage des noms de gènes - l'étiquette de l'axe x sur l'intrigue. Voici la visualisation du problème:GOHeat - les étiquettes des axes x (noms de gènes) n'apparaissent pas sur le graphique

parcelle de vignette qui est la façon dont il devrait ressembler à: enter image description here

et voici comment il ressemble quand je le tracer:

enter image description here

j'ai décidé de prendre regarder de plus près sur la fonction GOHeat() et c'est preety simple, la fonction entière est here mais j'ai essayé de modifier ggplot():

g <- ggplot() + 
    geom_tile(data = df_o, aes(x = x, y = y, fill = z))+ 
    scale_x_discrete(breaks = 1:length(unique(df_o$x)), labels = unique(df_o$lab)) + 
    theme(axis.text.x = element_text(angle = 90, vjust = 0.5), axis.title.x=element_blank(), axis.title.y=element_blank(), 
      axis.text.y = element_text(size = 14), panel.background=element_blank(), panel.grid.major=element_blank(), 
      panel.grid.minor=element_blank()) 

Je pense que les marigins en axis.text.x = element_text(...) mais mes efforts n'ont pas du tout changé l'intrigue, ou même quelques erreurs se sont produites.

Pour faciliter les choses, je montre comment les données ressemble à:

> head(unique(df_o$x)) 
[1] 1 2 3 4 5 6 
> head(unique(df_o$lab)) 
[1] TGFBR3 NRP2 GNA13 SLC22A5 APOE LEPR 
37 Levels: ACVRL1 AMOT APOE ATP6V0A1 CAV1 CDH2 CDH5 CERKL CXCR4 ECSCR  EFNB2 FGF2 ... VANGL2 

Je serai très reconnaissant pour toute idée de comment « allumer » étiquettes x axe.

Répondre

1

est ici une fonction fixe:

GOHeat_fix <- function (data, nlfc, fill.col) 
{ 
    x <- y <- z <- NULL 
    if (missing(nlfc)) 
    nlfc <- 0 
    else nlfc <- nlfc 
    if (missing(fill.col)) 
    fill.col <- c("firebrick", "white", "dodgerblue") 
    else fill.col <- fill.col 
    distance <- dist(data) 
    cluster <- hclust(distance) 
    M <- dim(data)[2] 
    nterm <- M - nlfc 
    if (nlfc == 0) { 
    s <- rowSums(data[, 1:nterm]) 
    tmp <- NULL 
    for (r in 1:nrow(data)) { 
     tmp <- c(tmp, as.numeric(gsub(1, s[r], data[r, 1:nterm]))) 
    } 
    } 
    else { 
    tmp <- NULL 
    for (r in 1:nrow(data)) { 
     tmp <- c(tmp, as.numeric(gsub(1, data[r, (nterm + 
                1)], data[r, 1:nterm]))) 
    } 
    } 
    df <- data.frame(x = factor(rep(cluster$order, each = nterm)), y = rep(colnames(data[, 
                       1:nterm]), length(rownames(data))), z = tmp, lab = rep(rownames(data), 
                                     each = nterm)) 
    df_o <- df[order(df$x), ] 
    g <- ggplot() + 
    geom_tile(data = df_o, aes(x = x, y = y, fill = z)) + 
    scale_x_discrete(breaks = 1:length(unique(df_o$x)), labels = unique(df_o$lab)) + 
    theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1), 
      axis.title.x = element_blank(), 
      axis.title.y = element_blank(), 
      axis.text.y = element_text(size = 14), 
      panel.background = element_blank(), 
      panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank()) + 
    coord_fixed() 
    if (nlfc == 0) { 
    g + scale_fill_gradient2("Count", space = "Lab", low = fill.col[2], 
          mid = fill.col[3], high = fill.col[1]) 
    } 
    else { 
    g + scale_fill_gradient2("logFC", space = "Lab", low = fill.col[3], 
          mid = fill.col[2], high = fill.col[1]) 
    } 
} 

exemple:

library(GOplot) 
data(EC) 
circ <- circle_dat(EC$david, EC$genelist) 
chord <- chord_dat(data = circ, genes = EC$genes, process = EC$process) 
GOHeat_fix(chord[,-8], nlfc = 0) 

enter image description here

je résolu le problème avec des étiquettes et ajouté coord_fixed() puisque c'est comment heatmaps sont habituellement faites.

+0

Wow, juste incroyable, merci beaucoup! – Adamm