将 ggplot 保存为 EPS 格式以便在 Adob​​e Illustrator 中进行编辑 - 文本问题

twb*_*b10 5 r adobe-illustrator ggplot2 cowplot

问题

我想保存ggplotR 中的文件以便在 Adob​​e Illustrator (AI) 中进行编辑。我可以将绘图保存为EPSPS格式ggsave,但绘图总是在文本周围带来一些阴影。有没有办法在 R 或 Adob​​e Illustrator 中解决这个问题?

例如,我的情节如下所示:

PNG

但是,当我将其导入 AI 时,它看起来像这样(文本周围的粉红色阴影):

截屏

代码

# Saving a plot for editing in Adobe Illustrator.

library(ggplot2) # for plotting
library(cowplot) # for ggsave

# Generate an example scatter plot.
# From: http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html
options(scipen=999)  # turn-off scientific notation like 1e+48
theme_set(theme_gray())  
data("midwest", package = "ggplot2")

plot <- ggplot(midwest, aes(x=area, y=poptotal)) + 
  geom_point(aes(col=state, size=popdensity)) + 
  geom_smooth(method="loess", se=F) + 
  xlim(c(0, 0.1)) + 
  ylim(c(0, 500000)) + 
  labs(subtitle="Area Vs Population", 
       y="Population", 
       x="Area", 
       title="Scatterplot", 
       caption = "Source: midwest")
plot

# Save the plot as .eps with ggsave. 
file <- "myplot.eps"
ggsave("myplot.jpg",plot)
Run Code Online (Sandbox Code Playgroud)

twb*_*b10 4

更新 11/03/2020

现在,我确保在生成任何绘图之前已将字体明确设置为“Arial”。您可以使用包设置自定义字体extrafont

library(extrafont)

font_import(path=font_path, prompt=FALSE)

fonts() # check to see which fonts are available

choose_font("Arial")

# plotting code ...
Run Code Online (Sandbox Code Playgroud)

其中font_path指定包含所需“字体”的目录的路径,例如arial.ttf.

旧的部分解决方案

我为这个糟糕的问题道歉。导入 Adob​​e Illustrator 后,绘图文本后面的粉红色底纹表示 AI 无法识别该字体。如果从 AI 导出绘图,这种阴影就会消失。

要向 AI 添加字体,您可以尝试按照以下说明操作:

向 Adob​​e Illustrator 添加新字体

来源

  • 创建一个新的AI文档(文件>新建)
  • 开始输入新文档。
  • 从dafont.com下载橙汁字体。
  • 解压文件(橙汁2.0.ttf)
  • 安装 TrueType 文件(右键单击 > 安装)。
  • 该字体现在应该可以在 AI 中识别。

要检查 ggplot 使用哪种字体:

> mytheme <- ggplot2::theme_gray()
> mytheme$family
[1] "" # The default is sans.

# To check which sans font is being used:
> windowsFonts()
$`serif`
[1] "TT Times New Roman"

$sans
[1] "TT Arial" 

$mono
[1] "TT Courier New"

# My PC's default sans font is TT Arial.
'''
Run Code Online (Sandbox Code Playgroud)