R语言 如何在ggplot主题中指定字体样式或外观?

kmbjn2e3  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(181)

使用SystemFonts,我可以看到不同的字体家族和样式:

> systemfonts::system_fonts() %>% filter(family == "Segoe UI")
# A tibble: 12 × 9
   path                                index name                    family   style            weight   width  italic monospace
   <chr>                               <int> <chr>                   <chr>    <chr>            <ord>    <ord>  <lgl>  <lgl>    
 1 "C:\\WINDOWS\\Fonts\\segoeui.ttf"       0 SegoeUI                 Segoe UI Regular          normal   normal FALSE  FALSE    
 2 "C:\\WINDOWS\\Fonts\\seguibl.ttf"       0 SegoeUIBlack            Segoe UI Black            heavy    normal FALSE  FALSE    
 3 "C:\\WINDOWS\\Fonts\\seguibli.ttf"      0 SegoeUIBlack-Italic     Segoe UI Black Italic     heavy    normal TRUE   FALSE    
 4 "C:\\WINDOWS\\Fonts\\segoeuib.ttf"      0 SegoeUI-Bold            Segoe UI Bold             bold     normal FALSE  FALSE    
 5 "C:\\WINDOWS\\Fonts\\segoeuiz.ttf"      0 SegoeUI-BoldItalic      Segoe UI Bold Italic      bold     normal TRUE   FALSE    
 6 "C:\\WINDOWS\\Fonts\\segoeuii.ttf"      0 SegoeUI-Italic          Segoe UI Italic           normal   normal TRUE   FALSE    
 7 "C:\\WINDOWS\\Fonts\\segoeuil.ttf"      0 SegoeUI-Light           Segoe UI Light            light    normal FALSE  FALSE    
 8 "C:\\WINDOWS\\Fonts\\seguili.ttf"       0 SegoeUI-LightItalic     Segoe UI Light Italic     light    normal TRUE   FALSE    
 9 "C:\\WINDOWS\\Fonts\\seguisb.ttf"       0 SegoeUI-Semibold        Segoe UI Semibold         semibold normal FALSE  FALSE    
10 "C:\\WINDOWS\\Fonts\\seguisbi.ttf"      0 SegoeUI-SemiboldItalic  Segoe UI Semibold Italic  semibold normal TRUE   FALSE    
11 "C:\\WINDOWS\\Fonts\\segoeuisl.ttf"     0 SegoeUI-Semilight       Segoe UI Semilight        NA       normal FALSE  FALSE    
12 "C:\\WINDOWS\\Fonts\\seguisli.ttf"      0 SegoeUI-SemilightItalic Segoe UI Semilight Italic NA       normal TRUE   FALSE

但是如何在ggplot主题中使用不同的样式呢?face参数似乎不起作用。

> ggplot(mtcars) +
+   aes(x=mpg, y=hp) +
+   geom_point() +
+   theme(text = element_text(family="Segoe UI", face="Semibold", size=20))
Error in FUN(X[[i]], ...) : invalid fontface Semibold

我还尝试使用name列中的值作为族,但这不起作用。

kx7yvsdv

kx7yvsdv1#

我以前在ggplot上也遇到过同样的问题。我建议使用showtext库,在那里你可以将你电脑上安装的任何字体分配给一个字符变量,然后再使用它。
基于你的例子:

library(ggplot2)
library(showtext)

showtext_auto(TRUE) # Automatically Using 'showtext' for New Graphics Devices

fl <- font_files()
fl[grepl("Segoe", fl$family),]

                path          file             family        face      version                 ps_name
461 C:/Windows/Fonts   segmdl2.ttf  Segoe MDL2 Assets     Regular Version 1.79         SegoeMDL2Assets
462 C:/Windows/Fonts   segoepr.ttf        Segoe Print     Regular Version 5.04              SegoePrint
463 C:/Windows/Fonts  segoeprb.ttf        Segoe Print        Bold Version 5.04         SegoePrint-Bold
464 C:/Windows/Fonts   segoesc.ttf       Segoe Script     Regular Version 5.02             SegoeScript
465 C:/Windows/Fonts  segoescb.ttf       Segoe Script        Bold Version 5.02        SegoeScript-Bold
466 C:/Windows/Fonts   segoeui.ttf           Segoe UI     Regular Version 5.62                 SegoeUI
467 C:/Windows/Fonts  segoeuib.ttf           Segoe UI        Bold Version 5.62            SegoeUI-Bold
468 C:/Windows/Fonts  segoeuii.ttf           Segoe UI      Italic Version 5.32          SegoeUI-Italic
469 C:/Windows/Fonts  segoeuil.ttf     Segoe UI Light     Regular Version 5.62           SegoeUI-Light
470 C:/Windows/Fonts segoeuisl.ttf Segoe UI Semilight     Regular Version 5.62       SegoeUI-Semilight
471 C:/Windows/Fonts  segoeuiz.ttf           Segoe UI Bold Italic Version 5.32      SegoeUI-BoldItalic
472 C:/Windows/Fonts   seguibl.ttf     Segoe UI Black     Regular Version 2.02            SegoeUIBlack
473 C:/Windows/Fonts  seguibli.ttf     Segoe UI Black      Italic Version 2.02     SegoeUIBlack-Italic
474 C:/Windows/Fonts  seguiemj.ttf     Segoe UI Emoji     Regular Version 1.29            SegoeUIEmoji
475 C:/Windows/Fonts  seguihis.ttf  Segoe UI Historic     Regular Version 1.03         SegoeUIHistoric
476 C:/Windows/Fonts   seguili.ttf     Segoe UI Light      Italic Version 5.32     SegoeUI-LightItalic
477 C:/Windows/Fonts   seguisb.ttf  Segoe UI Semibold     Regular Version 5.62        SegoeUI-Semibold
478 C:/Windows/Fonts  seguisbi.ttf  Segoe UI Semibold      Italic Version 5.32  SegoeUI-SemiboldItalic
479 C:/Windows/Fonts  seguisli.ttf Segoe UI Semilight      Italic Version 5.32 SegoeUI-SemilightItalic
480 C:/Windows/Fonts  seguisym.ttf    Segoe UI Symbol     Regular Version 6.23           SegoeUISymbol

在我的例子中,半粗体Segoe字体是seguisb.ttf。我可以将此字体分配给变量"ssb",并在base和gg图中使用它

font_add("ssb","seguisb.ttf")

ggplot(mtcars) +
   aes(x=mpg, y=hp) +
   geom_point() +
   theme(text = element_text(family="ssb", size=20))

plot(mtcars$mpg, mtcars$hp, family="ssb")

同样,您可以将所需的所有faces保存在不同的变量("sbold""sregular"等)中,并根据需要使用它们。

相关问题