在我的研究中,我使用R生成各种图形。我看到大多数图形都提供了各种大小的Sans Serif类型字体。
如何将图表中的所有文字(x-label,y-label,title,legend等)更改为统一字体,例如Times New Roman,12pt,Bold?
答案 0 :(得分:31)
您可以使用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
注意:使用extrafont
包,您还可以将这些字体嵌入PDF和EPS文件中(在R中创建绘图并导出为PDF / EPS)。您也可以直接创建数学符号(请参见下图中的数学公式),通常使用TeX创建。更多信息here和here。另请查看github project page。
另请参阅this回答,该回答描述了使用extrafont
包创建xkcd样式图。
答案 1 :(得分:10)
您可以使用windowsFonts()
命令和family
中的plot
选项将Windows中的字体更改为Times New Roman:
x = seq(1,10,1)
y = 1.5*x
windowsFonts(A = windowsFont("Times New Roman"))
plot(x, y,
family="A",
main = "title",
font=2)
粗体文字来自font=2
。至于大小,请参阅?cex()
。另请参见此处:http://www.statmethods.net/advgraphs/parameters.html
答案 2 :(得分:7)
这是使用ggplot
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
正如您所看到的,该文本确实是Times New Roman。
主要的想法是,无论你使用
在R内部给出字体的名称windowsFonts(name=windowsFont("system name"))
你应该用来引用
中的字体theme(text=element_text(family="name",...),...)
答案 3 :(得分:1)
UPDATE 2020
现在可以使用ggtext
包来解决此问题,例如:
install.packages(ggtext)
plot <- plot + theme(
legend.text = ggtext::element_markdown(family = 'Times', face='bold')
)
此外,您可以使用markdown来补充绘图文本。与ggtext
相比,我extrafont
经历了更简单,更安全的故障。