使用R中的表达式函数更改图例中的文本字体

使用R中的表达式函数更改图例中的文本字体,r,fonts,expression,legend,R,Fonts,Expression,Legend,我有以下图例,我正试图将其改为泰晤士报新罗马字体: legend(x = 23, y = 40, legend = c(expression(bold('Dawn Col-0 Control')), expression(bold('Dusk Col-0 Control')), expression(bold('Dawn Col-0 100g ha'^'-1')), expression(bold('Dusk Col-0 100g ha'^'-1'))), col = c('black', 'r

我有以下图例,我正试图将其改为泰晤士报新罗马字体:

legend(x = 23, y = 40, legend = c(expression(bold('Dawn Col-0 Control')), expression(bold('Dusk Col-0 Control')), expression(bold('Dawn Col-0 100g ha'^'-1')), expression(bold('Dusk Col-0 100g ha'^'-1'))), col = c('black', 'red','black', 'red'), lty = c(1,1,2, 2), pch=c(19,19,19,19), cex = 1.5, bty="n", lwd=2)
因为我使用的是表达式函数

par(family="A", font=2) 
在图例之前或之后调用时不起作用。
你知道我如何把字体改成泰晤士报新罗马字体吗?

我想这取决于你的机器。但对我来说,在我的windows上,我可以使用
times new roman
字体来获取图例,即使在
图例中使用
表达式

par(family = "serif")
plot(1:30, 21:50)
legend(x = 15, y = 40,
       legend = c(expression(bold('Dawn Col-0 Control')), 
                  expression(bold('Dusk Col-0 Control')), 
                  expression(bold('Dawn Col-0 100g ha'^'-1')),
                  expression(bold('Dusk Col-0 100g ha'^'-1'))),
       col = c('black', 'red','black', 'red'), lty = c(1,1,2, 2), pch=c(19,19,19,19), cex = 1.5, bty="n", lwd=2)
如果您运行
windowsFonts()
命令,它将告诉您默认情况下哪些字体可用(对我来说,“serif”是指Times New Roman字体,“sans”是指Arial字体)

现在,如果times new roman不在您的字体列表中,您可以通过以下方式添加它:

windowsFonts(TimesNewRoman  = windowsFont("Times New Roman"))
然后将绘图创建为:

par(family = "TimesNewRoman")
plot(1:30, 21:50)
legend(x = 15, y = 40,
       legend = c(expression(bold('Dawn Col-0 Control')), 
                  expression(bold('Dusk Col-0 Control')), 
                  expression(bold('Dawn Col-0 100g ha'^'-1')),
                  expression(bold('Dusk Col-0 100g ha'^'-1'))),
       col = c('black', 'red','black', 'red'), lty = c(1,1,2, 2), pch=c(19,19,19,19), cex = 1.5, bty="n", lwd=2)

您需要使用base r图形还是可以使用ggplot?如果它不起作用,您可能需要先将计算机上可用的字体导入r。但我不能100%确定这一步有多必要。