Il était une fois, j'ai changé ma ggplot2
police en utilisant windowsFonts(Times=windowsFont("TT Times New Roman"))
pour la changer. Maintenant, je ne peux pas m'en débarrasser.
En essayant de jeu family=""
dans ggplot2
theme()
je ne peux pas sembler générer un changement dans les polices que je compilez le MWE ci - dessous avec les familles de police différentes.
library(ggplot2)
library(extrafont)
loadfonts(device = "win")
a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16,
# family="Comic Sans MS"))
# family="CM Roman"))
# family="TT Times New Roman"))
# family="Sans"))
family="Serif"))
print(a)
print("Graph should have refreshed")
R renvoie un avertissement font family not found in Windows font database
, mais il y avait un tutoriel que je suivais (si je peux le retrouver, je mettrai à jour le lien ici) qui disait que c'était normal et pas un problème. En outre, cela a fonctionné à un moment donné, car mon graphique utilisait autrefois une police de type arial ou helvitica. Je pense que cela a toujours été un avertissement présent, même pendant les premiers temps de migration.
MISE À JOUR
quand je lance windowsFonts()
ma sortie est
$ serif [1] "TT Times New Roman"
$ sans [1] "TT Arial"
$ mono [1] "TT Courier New"
Mais, c'est après que j'ai couru, font_import()
donc je ne peux que conclure que mes polices ne sont pas enregistrées au bon endroit. Le code qui a exécuté la font_import()
requête charge en fait les bibliothèques avec:
LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2");
.libPaths(c(LocalLibraryLocation, .libPaths()))
windowsFonts
disparu de grDevices après 3.4.1 . Le code ici doit être mis à jour.Réponses:
Vous venez de manquer une étape d'initialisation je pense.
Vous pouvez voir les polices disponibles avec la commande
windowsFonts()
. Par exemple, le mien ressemble à ceci quand j'ai commencé à regarder ceci:> windowsFonts() $serif [1] "TT Times New Roman" $sans [1] "TT Arial" $mono [1] "TT Courier New"
Après avoir installé le package extraFont et exécuté
font_import
comme ceci (cela a pris environ 5 minutes):library(extrafont) font_import() loadfonts(device = "win")
J'en avais beaucoup d'autres disponibles - trop discutables, certainement trop pour les énumérer ici.
Ensuite, j'ai essayé votre code:
library(ggplot2) library(extrafont) loadfonts(device = "win") a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text=element_text(size=16, family="Comic Sans MS")) print(a)
donnant ceci:
Mise à jour:
Vous pouvez trouver le nom d'une police dont vous avez besoin pour le
family
paramètre deelement_text
avec l'extrait de code suivant:> names(wf[wf=="TT Times New Roman"]) [1] "serif"
Puis:
library(ggplot2) library(extrafont) loadfonts(device = "win") a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text=element_text(size=16, family="serif")) print(a)
donne:
la source
mono||sans
(ceux-ci ne sont pas différents jusqu'à présent) etserif``, but not the actually name like
"TT Times New Roman", but additionally, I not sure that my
loadFonts` a réussi. Lorsque j'appelle,fonts()
j'ai une liste de près de 300 polices, mais je suppose qu'elles n'ont pas été installées dans l'environnement local, ce qui les rend accessibles au périphérique Windows. Je ne sais pas si cela a du sens, mais j'ai essayé de fournir une mise à jour de ma question initiale avec des extraits qui pourraient aider. Merci encore!wf[which(wf=="Comic Sans MS")]
cède$``Comic Sans MS`` [1] "Comic Sans MS"
Une autre option consiste à utiliser un
showtext
package qui prend en charge plus de types de polices (TrueType, OpenType, Type 1, polices Web, etc.) et plus de périphériques graphiques, et évite d'utiliser des logiciels externes tels que Ghostscript.# install.packages('showtext', dependencies = TRUE) library(showtext)
Importez des polices Google
# https://fonts.google.com/featured/Superfamilies font_add_google("Montserrat", "Montserrat") font_add_google("Roboto", "Roboto")
Charger la police du chemin de recherche actuel dans
showtext
# Check the current search path for fonts font_paths() #> [1] "C:\\Windows\\Fonts" # List available font files in the search path font_files() #> [1] "AcadEref.ttf" #> [2] "AGENCYB.TTF" #> [428] "pala.ttf" #> [429] "palab.ttf" #> [430] "palabi.ttf" #> [431] "palai.ttf" # syntax: font_add(family = "<family_name>", regular = "/path/to/font/file") font_add("Palatino", "pala.ttf") font_families() #> [1] "sans" "serif" "mono" "wqy-microhei" #> [5] "Montserrat" "Roboto" "Palatino" ## automatically use showtext for new devices showtext_auto()
Tracé: besoin d'ouvrir le périphérique graphique Windows car
showtext
ne fonctionne pas bien avec le périphérique graphique intégré RStudio# https://github.com/yixuan/showtext/issues/7 # https://journal.r-project.org/archive/2015-1/qiu.pdf # `x11()` on Linux, or `quartz()` on Mac OS windows() myFont1 <- "Montserrat" myFont2 <- "Roboto" myFont3 <- "Palatino" library(ggplot2) a <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text = element_text(size = 16, family = myFont1)) + annotate("text", 4, 30, label = 'Palatino Linotype', family = myFont3, size = 10) + annotate("text", 1, 11, label = 'Roboto', hjust = 0, family = myFont2, size = 10) ## On-screen device print(a)
## Save to PNG ggsave("plot_showtext.png", plot = a, type = 'cairo', width = 6, height = 6, dpi = 150) ## Save to PDF ggsave("plot_showtext.pdf", plot = a, device = cairo_pdf, width = 6, height = 6, dpi = 150) ## turn showtext off if no longer needed showtext_auto(FALSE)
Edit : une autre solution de contournement à utiliser
showtext
dans RStudio. Exécutez le code suivant au début de la session R ( source )trace(grDevices::png, exit = quote({ showtext::showtext_begin() }), print = FALSE)
la source
Une réponse simple si vous ne voulez rien installer de nouveau
Pour changer toutes les polices de votre tracé
plot + theme(text=element_text(family="mono"))
Oùmono
est la police choisie.Liste des options de police par défaut:
R n'a pas une bonne couverture de polices et, comme le souligne Mike Wise , R utilise des noms différents pour les polices courantes.
Cette page passe en revue les polices par défaut en détail.
la source
En retard à la fête, mais cela pourrait intéresser les personnes qui cherchent à ajouter des polices personnalisées à leur
ggplots
intérieur d'uneshiny
application sur shinyapps.io.Vous pouvez:
www
répertoire: par exemple àIndieFlower.ttf
partir d' iciCela conduit à la section supérieure suivante à l'intérieur du
app.R
fichier:dir.create('~/.fonts') file.copy("www/IndieFlower.ttf", "~/.fonts") system('fc-cache -f ~/.fonts')
Un exemple d'application complet peut être trouvé ici .
la source
Pour changer la police globalement pour les tracés ggplot2.
theme_set(theme_gray(base_size = 20, base_family = 'Font Name' ))
la source