web-dev-qa-db-fra.com

Ajouter une police à R qui ne se trouve pas dans la bibliothèque des extrafonts

Après avoir installé la bibliothèque extrafonts de R, et vérifié quelles polices il avait à offrir, il est venu avec cette liste:

[1] ".Keyboard"               "System Font"             "Andale Mono"             "Apple Braille"           "AppleMyungjo"           
[6] "Arial Black"             "Arial"                   "Arial Narrow"            "Arial Rounded MT Bold"   "Arial Unicode MS"       
[11] "Batang"                  "Bodoni Ornaments"        "Bodoni 72 Smallcaps"     "Bookshelf Symbol 7"      ""                       
[16] "Brush Script MT"         "Calibri"                 "Calibri Light"           "Cambria"                 "Cambria Math"           
[21] "Candara"                 "Comic Sans MS"           "Consolas"                "Constantia"              "Corbel"                 
[26] "Courier New"             "DIN Alternate"           "DIN Condensed"           "Franklin Gothic Book"    "Franklin Gothic Medium" 
[31] "Gabriola"                "Georgia"                 "Gill Sans MT"            "Gulim"                   "Impact"                 
[36] "Khmer Sangam MN"         "Lao Sangam MN"           "Lucida Console"          "Lucida Sans Unicode"     "Luminari"               
[41] "Marlett"                 "Meiryo"                  "Microsoft Yi Baiti"      "Microsoft Himalaya"      "Microsoft Sans Serif"   
[46] "Microsoft Tai Le"        "MingLiU_HKSCS-ExtB"      "MingLiU_HKSCS"           "MingLiU"                 "MingLiU-ExtB"           
[51] "Mongolian Baiti"         "MS Gothic"               "MS Mincho"               "MS PGothic"              "MS PMincho"             
[56] "MS Reference Sans Serif" "MS Reference Specialty"  "Palatino Linotype"       "Perpetua"                "PMingLiU"               
[61] "PMingLiU-ExtB"           "SimHei"                  "SimSun"                  "SimSun-ExtB"             "Tahoma"                 
[66] "Times New Roman"         "Trattatello"             "Trebuchet MS"            "Tw Cen MT"               "Verdana"                
[71] "Webdings"                "Wingdings"               "Wingdings 2"             "Wingdings 3"    

Cependant, je dois utiliser National 2 Condensed et National ( https://klim.co.nz/retail-fonts/national-2-condensed/ ).

Existe-t-il un moyen de télécharger ces polices personnalisées pour que R les utilise dans ggplot, même si elles ne sont pas incluses dans les polices supplémentaires? Et sinon , quelqu'un sait-il si l'une de ces polices est particulièrement similaire à National 2 Condensed et National 2?

8
Canovice

Vous obtenez d'abord la police que vous souhaitez et l'installez sur votre système. Rien à voir avec R. Testez si la police fonctionne en archivant n'importe quel programme normal comme MS Word ou quelque chose.

Ouvrez ensuite R, chargez le package extrafont et importez la police que vous avez installée. Je pense que cela ne fonctionne qu'avec .ttf polices pour l'instant.

library(extrafont)
font_import(pattern="Roboto")

Si cela fonctionne, cette étape ajoutera ces polices à extrafontdb. Vous verrez quelque chose comme ça ...

> font_import(pattern="Roboto",Prompt=FALSE)
Scanning ttf files in C:\windows\Fonts ...
Extracting .afm files from .ttf files...
C:\Windows\Fonts\Roboto-Black.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/Roboto-Black
C:\Windows\Fonts\Roboto-BlackItalic.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/Roboto-BlackItalic
...
C:\Windows\Fonts\RobotoCondensed-Regular.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/RobotoCondensed-Regular
Found FontName for 30 fonts.
Scanning afm files in C:/R/R-3.5.1/library/extrafontdb/metrics
Writing font table in C:/R/R-3.5.1/library/extrafontdb/fontmap/fonttable.csv
Writing Fontmap to C:/R/R-3.5.1/library/extrafontdb/fontmap/Fontmap...

C'est une chose unique. Une fois importé, il est désormais disponible dans R. Tout ce que vous avez à faire est d'exécuter ci-dessous.

library(extrafont)
# for windows
windowsFonts(sans="Roboto")
loadfonts(device="win")
loadfonts(device="postscript")

Maintenant, les valeurs par défaut auraient dû changer.

plot(x=1:5,y=1:5)

enter image description here

ggplot a base_family qui doit être modifié et family argument pour le texte geoms.

library(ggplot2)
p <- ggplot(data.frame(x=1:5,y=1:5),aes(x,y))+
  geom_point()+
  geom_text(aes(label=y),Nudge_x=0.5,family="Roboto")+
  theme_bw(base_family="Roboto")
p

L'exportation d'images raster devrait également fonctionner.

ggsave("plot.png",p)

enter image description here

Les PDF sont une douleur. Ils ont un argument supplémentaire family. Il y a aussi quelque chose à propos de l'intégration et d'autres choses. Voir le lien ci-dessous.

ggsave("plot.pdf",p,family="Roboto")

Toutes les informations dont vous avez besoin sont ici .

2
rmf

La solution utilisant le package showtext :

library(showtext)
## Add the font with the corresponding font faces
font_add("national2",
    regular = "National2CondensedTest-Regular.otf",
    bold = "National2CondensedTest-Bold.otf")
## Automatically use showtext to render plots
showtext_auto()

library(ggplot2)
p = ggplot(NULL, aes(x = 1, y = 1)) + ylim(0.8, 1.2) +
    annotate("text", 1, 1.1, label = "National 2 Condensed Bold",
             family = "national2", fontface = "bold", size = 15) +
    annotate("text", 1, 0.9, label = "National 2 Condensed Regular",
             family = "national2", size = 12) +
    theme(axis.title = element_blank(),
          axis.ticks = element_blank(),
          axis.text  = element_blank())

ggsave("test.pdf", p, width = 8, height = 4)

Ci-dessous le tracé généré:

Output of the plot using showtext

J'ai utilisé une version de test des fichiers de polices et, dans votre cas, modifiez simplement les arguments regular et bold en les chemins réels de vos fichiers.

0
yixuan