web-dev-qa-db-fra.com

Modification des polices des graphiques dans R

Dans mon étude, je génère différents graphiques en utilisant R. Je vois que la plupart des graphiques proposent une police de type Sans Serif de différentes tailles.

Comment changer tout le texte d'un graphique (étiquette X, étiquette Y, titre, légende, etc.) en une police uniforme, par exemple Times New Roman, 12pt, Bold?

25
Indian

Vous pouvez utiliser le paquet extrafont .

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: À l'aide du package extrafont, vous pouvez également incorporer ces polices dans PDF et fichiers EPS (faire des tracés en R et exporter au format PDF/EPS). Vous pouvez également créer directement des symboles mathématiques (voir l'équation mathématique dans le tracé ci-dessous), généralement créés à l'aide de TeX. Plus d'informations ici et ici . Regardez également le page du projet github .

enter image description here

Regardez aussi cette réponse qui décrit la création xkcd graphes de style utilisant le package extrafont.

enter image description here

32
Ujjwal

Vous pouvez changer la police dans Windows en Times New Roman en utilisant la commande windowsFonts() et l'option family 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. Quant à la taille, voir ?cex(). Voir aussi ici: http://www.statmethods.net/advgraphs/parameters.html

enter image description here

12
Devon

Voici une solution ggplot 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 vraiment 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 devez utiliser pour référencer la police

theme(text=element_text(family="name",...),...)
7
jlhoward