2017-07-10 3 views
1

ich einen Datenrahmen d wie dieses:Artikel Legende nach Themen Optionen hinzufügen

d <- data.frame("name" = c("pippo","pluto","paperino"), 
"id" = c(1,2,3),"count" = c(10,20,30), 
"pvalue"=c(0.01,0.02,0.05), 
geneRatio=c(0.5,0.8,0.2), 
type=c("KEGG","Reactome","Reactome")) 

und ich eine Dotplot plotten die Bibliothek ggplot mit:

ggplot(data = d,aes(geneRatio,name,size=count,colour = pvalue)) + 
    geom_point()+ 
    ggtitle("Significantly Pathways") + 
    xlab("Gene Ratio") + 
    ylab("Pathways")+ 
    theme(axis.text.y = element_text(color=d$type)) 

Dies ist die Handlung im Moment enter image description here

Ich möchte zur Legende die Informationen von "Typ" im Dataframe d hinzufügen. Ich hätte gerne ein neues Element in der Legende mit Farbe rot = Reactome und Farbe schwarz = KEGG

+0

aus dem [Kommentar hier] (https://stackoverflow.com/questions/40914194) sieht aus wie nicht möglich. – zx8754

+0

Warum nicht auf Reactome/KEGG? – zx8754

+0

wie? Ich hätte gerne alle Informationen in einem einzigartigen Graphen. – TheAvenger

Antwort

2

sage nicht, dass dies eine gute Idee ist, aber Sie können einen unsinnigen geom fügen Sie das Hinzufügen einer Führung zu erzwingen:

d <- data.frame("name" = c("pippo","pluto","paperino"), 
       "id" = c(1,2,3), 
       "count" = c(10,20,30), 
       "value"=c(0.01,0.02,0.05), 
       geneRatio=c(0.5,0.8,0.2), 
       type=c("KEGG","Reactome","Reactome") 
       ) 

library(ggplot2) 

ggplot(data = d, aes(geneRatio,name,colour = pvalue)) + 
    geom_point(aes(size=count))+ 
    geom_polygon(aes(geneRatio,name,fill = type)) + 
    ggtitle("Significantly Pathways") + 
    xlab("Gene Ratio") + 
    ylab("Pathways") + 
    scale_fill_manual(values = c('Reactome'='red', 'KEGG'='black')) + 
    theme(axis.text.y = element_text(color=d$type)) 

geom_polygon kann nicht mit Ihren tatsächlichen Daten arbeiten, und Sie finden möglicherweise kein passendes "unsinniges" Geom. Ich stimme mit @ zx8754, wäre eine Facette klarer sein:

ggplot(data = d, aes(geneRatio,name,colour = pvalue)) + 
    geom_point(aes(size=count)) + 
    ggtitle("Significantly Pathways") + 
    xlab("Gene Ratio") + 
    ylab("Pathways") + 
    facet_grid(type ~ ., scales = 'free_y', switch = 'y') 

+0

Vielen Dank! :) Es klappt :) – TheAvenger

1

Sie könnten dies mit annotate erreichen, aber es ist ein bisschen manuell.

ggplot(data = d, aes(geneRatio, name, size = count, colour = pvalue)) + 
    geom_point() + 
    ggtitle("Significantly Pathways") + 
    xlab("Gene Ratio") + 
    ylab("Pathways")+ 
    theme(axis.text.y = element_text(color=d$type)) + 
    annotate("text", x = 0.25, y = 3.5, label = "Reactome", color = "red") + 
    annotate("text", x = 0.25, y = 3.4, label = "KEGG", color = "black") 

enter image description here

Verwandte Themen