Error using Arial in .eps figure with extrafont package

前端 未结 3 1638
臣服心动
臣服心动 2021-01-14 07:42

I\'m using ggplot2 in R to generate figures for a publication in which all figures need to be .eps format and all fonts needs to be Arial. I\'ve been following this guide to

相关标签:
3条回答
  • 2021-01-14 08:12

    Instead of extrafont package

    library(ggplot2)
    plot <- ggplot(mtcars, aes(wt, qsec)) + 
      geom_point() + 
      theme(text = element_text(family = "Arial"),
            axis.title = element_text(size = 22))
    
    ggsave(filename = "myfile.eps",plot)
    
    0 讨论(0)
  • 2021-01-14 08:16

    For future reference, I also had trouble using extrafont with Arial (but on Windows), and it turned out there were multiple causes.

    The errors I received were: Error in title(...) : metric information not available for this device, In title(...) : font metrics unknown for character 0x4d and font width unknown.

    It turns out that extrafont requires ghostscript, which is not at all clear from these error messages. In fact, I had ghostscript installed, but (at least in my case) it also had to be registered in the Path environment variable, as described here (substitute your version number).

    Even with that in place, it appears that it is not the font names listed in names(postscriptFonts()) and fonttable() that can be used. Arial and Times New Roman (or TimesNewRoman or TimesNewRomanPSMT) don't work for me, instead ArialMT and Times do. I don't know why this is and how one can find a list of names that do work.

    0 讨论(0)
  • 2021-01-14 08:19

    Assuming you are on a Windows OS, you can alternatively create the graph using the showtext package.

    library(showtext)
    ## add the Arial font
    font.add("Arial", regular = "arial.ttf",
        bold = "arialbd.ttf", italic = "ariali.ttf", bolditalic = "arialbi.ttf")
    
    setEPS()
    postscript("some_graph.eps")
    showtext.begin() ## call this function after opening a device
    
    ggplot() + geom_point(aes(x=xvar, y=yvar)) +
        theme_minimal(base_family = "Arial")
    
    dev.off()
    

    The drawback is that you cannot use the ggsave() function, but instead call the device function by yourself.

    For the usage of the showtext package, a README is given at https://github.com/yixuan/showtext.

    0 讨论(0)
提交回复
热议问题