Modification des polices de caractères pour les graphiques en R

dans mon étude, je génère divers graphiques à L'aide de R. Je vois que la plupart des graphiques sont produits avec une police Sans empattement de différentes tailles.

comment modifier tout le texte d'un graphique (X-label, y-label, titre, Légende, etc.) dans une police uniforme, par exemple Times New Roman, 12pt, Bold?

18
demandé sur Indian 2014-12-29 15:48:39

3 réponses

Vous pouvez utiliser le extrafont paquet.

install.packages("extrafont")
library(extrafont)
font_import()
loadfonts(device="win")       #Register fonts for Windows bitmap output
fonts()                       #vector of font family names
##  [1] "Andale Mono"                  "AppleMyungjo"                
##  [3] "Arial Black"                  "Arial"                       
##  [5] "Arial Narrow"                 "Arial Rounded MT Bold"  

library(ggplot2)
data(mtcars)
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +     
  ggtitle("Fuel Efficiency of 32 Cars") +
  xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
  theme_bw() +
  theme(text=element_text(family="Times New Roman", face="bold", size=12)) #Times New Roman, 12pt, Bold
#example taken from the Github project page

enter image description here

Remarque:extrafont paquet, vous pouvez également intégrer ces polices dans les fichiers PDF et EPS (faire des tracés dans R et exporter vers PDF/EPS). Vous pouvez aussi créer directement des symboles mathématiques (voir équation mathématique dans le graphique ci-dessous), généralement créés en utilisant TeX. Plus d'information ici et ici. Aussi regarder github du projet page.

enter image description here

regardez réponse qui décrit la création d' xkcd graphiques de style utilisant le extrafont paquet.

enter image description here

26
répondu Ujjwal 2017-05-23 12:32:21

Voici un ggplot solution en utilisant WindowsFonts(...)

windowsFonts(Times=windowsFont("Times New Roman"))
library(ggplot2)
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
  ggtitle("Fuel Efficiency of 32 Cars") +
  xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
  theme_bw() +
  theme(text=element_text(family="Times", face="bold", size=12)) #Times New Roman, 12pt, Bold

comme vous pouvez le voir, le texte est en fait Times New Roman.

L'idée principale est que quel que soit le nom que vous donnez à la police en interne dans R, en utilisant

windowsFonts(name=windowsFont("system name"))

vous devriez utiliser pour référencer la police dans

theme(text=element_text(family="name",...),...)
7
répondu jlhoward 2014-12-29 19:27:20

vous pouvez changer la police dans Windows en Times New Roman en utilisant le windowsFonts() le commandement et le family option dans plot:

x = seq(1,10,1)
y = 1.5*x
windowsFonts(A = windowsFont("Times New Roman"))
plot(x, y,
  family="A",
  main = "title",
  font=2)

le texte en gras provient de font=2. Comme pour la taille, voir ?cex(). Voir aussi:http://www.statmethods.net/advgraphs/parameters.html

enter image description here

7
répondu Devon 2014-12-30 19:14:22