2012-11-27 4 views
7

J'utilise ggplot2 pour générer un nuage de points. J'ai fait le titre dans une variable, comment puis-je changer la taille de la police? Le code est comme suit:Comment changer la taille de la police du titre de la parcelle lorsque le titre est une variable dans ggplot2?

library("ggplot2") 
plotfunc <- function(x){ 
    x + 
    geom_point() + 
    geom_smooth(se = FALSE, method = "lm", color = "blue", size = 1) + 
    opts(title = plottitle, 
      axis.title.x = theme_text(size = 8, colour = 'black'), 
     axis.title.y = theme_text(size = 8, colour = 'black', angle = 90)) 
} 

plottitle <- "This is Title" 
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) 
plotfunc(p) 

J'ai essayé

opts(title = plottitle (size = 10),... 

mais il y avait une erreur:

Error in opts(title = plottitle(size = 10), 
axis.title.x = theme_text(size = 8, : could not find function "plottitle" 

Il a été reconnu que la fonction qui n'était pas ce que je veux. Que dois-je faire? Merci.

+0

J'ai essayé d'exécuter votre exemple, mais je n'ai pas la fonction 'label' que vous utilisez, vous devriez aussi envisager d'ajouter 'require (ggplot2)'. Si votre exemple est réellement reproductible, il est beaucoup plus facile pour nous de vous aider. –

Répondre

1

Vous mettez un « (» comme le prochain caractère non-blanc après plottitle que l'interprète a décidé qu'il doit être une fonction Essayez

.... opts(title=plottile, size=10) 

Ce fut la longue liste des messages réchauffement.

Warning messages: 
1: 'opts' is deprecated. 
Use 'theme' instead. 
See help("Deprecated") 
2: 'theme_text' is deprecated. 
Use 'element_text' instead. 
See help("Deprecated") 
3: 'theme_text' is deprecated. 
Use 'element_text' instead. 
See help("Deprecated") 
4: In opts(title = plottitle, axis.title.x = theme_text(size = 8, colour = "black"), : 
    Setting the plot title with opts(title="...") is deprecated. Use labs(title="...") or ggtitle("...") instead. 
+0

J'ai essayé 'opts (titre = plottitle, taille = 10) + opts (axis.title.x = theme_text (taille = 8, couleur = 'noir'), axis.title.y = theme_text (taille = 8, couleur = 'noir', angle = 90)) 'Il y avait une erreur:' Erreur: "taille" n'est pas un nom d'élément de thème valide' – Autumn

+0

Encore une autre erreur et pas une qui était prévisible à partir de votre code. De plus, lorsque je lance le code, je ne reçois que des avertissements sur l'utilisation obsolète des opts, mais j'obtiens ce titre sur l'intrigue. –

8

Si (opts) fonctionne toujours pour vous, alors vous utilisez une ancienne version de ggplot2. la commande plus récente est le thème (). Dans tous les cas, vous ne voulez pas mettre l'un étiquette de titre ctual en opte ou thème - utilisation laboratoires()

plotfunc <- function(x){ 
    x + 
    geom_point() + 
    geom_smooth(se = FALSE, method = "lm", color = "blue", size = 1) + 
    theme(axis.title.x = element_text(size = 8, colour = 'black'), 
     axis.title.y = element_text(size = 8, colour = 'black', angle = 90))+ 
    labs(title='this', x='that', y='the other')+ 
    theme_bw() 
} 

## plottitle <- "This is Title" 
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) 
plotfunc(p) 

enter image description here

+1

FYI - si vous passez 'theme()' avant \ theme_bw() 'comme vous le faites ci-dessus, vos options' size = 8' n'auront aucun effet. 'theme_bw()' est un preset qui écrase les paramètres 'theme()' (ajout d'une note à ce sujet dans ma réponse ci-dessous). Essayez de passer à 'size = 2' et vous remarquerez que rien ne change. Mettre 'theme_bw() +' avant 'theme (...)' fonctionnera; il appliquera d'abord le preset, puis les arguments 'theme (...)' écraseront les paramètres de 'theme_bw()', le cas échéant. – Hendy

6

réponse Ridiculously en retard, mais je ne pense pas que les réponses existantes traitent de la question actuelle:

I made the title into a variable, how can I change the font size?

Cela fonctionne pour moi et est dans la mise à jour ggplot syntaxe (theme() contre opts()):

library(ggplot2) 
plotfunc <- function(x){ 
    x + 
    geom_point() + 
    geom_smooth(se = FALSE, method = "lm", color = "blue", size = 1) + 
    labs(title = plottitle) + 
    ### pay attention to the ordering of theme_bw() vs. theme() 
    theme_bw() + 
    theme(plot.title = element_text(size = 20), 
      axis.title.x = element_text(size = 12), 
      axis.title.y = element_text(size = 8)) 

} 

plottitle <- "This is Title" 
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) 
plotfunc(p) 

Je reçois le texte suivant:

ggplot theme(plot.title)

Une note sur mon commentaire theme_bw(): essayez d'exécuter ce qui précède, mais mis theme_bw() dernier, après le bit theme(plot.title, ...), comme dans la réponse de Stephen Henderson ci-dessus. Vous remarquerez qu'aucune des tailles de police ne prend effet. En effet, theme_bw() est un paramètre prédéfini qui écrase diverses options theme() personnalisées si vous les transmettez après leur ajout.

Juste une chose finnicky à surveiller; Je l'ai seulement appris en raison de l'utilisation de theme_bw() beaucoup et de frapper ma tête contre le mur en essayant de comprendre pourquoi les autres options theme() ne fonctionnaient pas avant de réaliser que ce n'était pas ma syntaxe ggplot après tout, mais l'ordre de mes paramètres. Doit aimer coder :)

Aussi, voici the full list of options vous pouvez passer à theme() comme référence pour ce que vous pouvez modifier et comment.

Questions connexes