2017-08-29 2 views
1

J'utilise ggplot2 avec + geom_line() + geom_point(). J'ai les couleurs/formes élaborées, mais je ne peux pas adapter la légende de manière appropriée. Si je ne fais rien, c'est minuscule, et si je l'agrandis, la couleur bloque la forme.Dans ggplot2, comment puis-je mettre à l'échelle la légende lorsque j'utilise deux types de graphique?

Par exemple: enter image description here

Vous pouvez voir que les formes et les couleurs sont à la fois dans la légende, mais les formes sont en cours d'élaboration sur les couleurs. J'aimerais avoir des formes de la couleur appropriée dessinées dans la légende, mais je n'arrive pas à comprendre comment le faire.

Mon terrain est noient comme suit:

ggplot(data=melted, aes(x=gene, y=value, colour=variable, shape=variable, group = variable, stroke=3, reorder(gene, value))) 
+ theme_solarized() 
+ scale_colour_solarized("blue") 
+ geom_line() 
+ geom_point() 
+ theme(axis.text.x = element_text(angle = 90, hjust = 1), plot.title = element_text(size=16, face="bold"), legend.title=element_blank(), legend.text=element_text(size=20)) 
+ ggtitle('Signiture Profiles') 
+ labs(x="Gene", y=expression(paste("Expression"), title="Expression")) 
+ scale_colour_manual(name = "Virus/Time", labels = c("Mock", "ACali09_day1", "ACali09_day3", "ACali09_day8", "AShng113_day1", "AShng113_day3", "AShng113_day8", "AChkShng113_day1", "AChkShng113_day3", "AChkShng113_day8"), values = c("#ff420e","#89da59","#89da59","#89da59","#376467","#376467","#376467","#00293c","#00293c","#00293c")) 
+ scale_shape_manual(name = "Virus/Time", labels = c("Mock", "ACali09_day1", "ACali09_day3", "ACali09_day8", "AShng113_day1", "AShng113_day3", "AShng113_day8", "AChkShng113_day1", "AChkShng113_day3", "AChkShng113_day8"), values = c(0,1,2,3,1,2,3,1,2,3)) 
+ guides(colour = guide_legend(override.aes = list(size=12))) 

Voici quelques exemples de données demandé: Example Data

Merci d'avance pour toute aide que vous pouvez fournir.

+0

Pouvez-vous ajouter un ensemble de données exemple à votre question que nous pouvons utiliser? – aosmith

+0

Essayez: 'guides (shape = guide_legend (override.aes ​​= liste (size = 12)))' au lieu de 'guides (color = guide_legend (override.aes ​​= liste (size = 12)))' – Mosquite

+0

@Mosquite Bonne idée , malheureusement ça n'a rien changé. :( –

Répondre

1

Vous pourriez peut-être repenser la façon dont vous différenciez vos variables. Vous pourriez faire quelque chose comme ce qui suit. Notez les changements dans la première ligne, où j'ai séparé les parties constituantes de variable plutôt que de définir des couleurs et des formes via vos instructions scale. (Je n'ai pas votre thème, alors je l'ai laissé de côté).

ggplot(data=melted, aes(x=gene, 
         y=value, 
         colour=gsub("_.*","",variable), 
         shape=gsub(".*_","",variable), 
         group = variable, 
         stroke=3, 
         reorder(gene, value))) + 
    geom_line() + 
    geom_point() + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1), 
     plot.title = element_text(size=16, face="bold"), 
     legend.title=element_blank(), 
     legend.text=element_text(size=20)) + 
    ggtitle('Signiture Profiles') + 
    labs(x="Gene", y=expression(paste("Expression"), title="Expression")) + 
    guides(shape = guide_legend(override.aes = list(size=5)), 
     colour = guide_legend(override.aes = list(size=5))) 

enter image description here

+0

Merci, ceci est une grande amélioration sur l'intrigue. –