4

我遇到了一些图形设备打印丢失的字形框而不是字符的问题。实际上,到目前为止,我尝试过的唯一呈现字符的设备是 PDF。由于我最近更新了 R 并重建了一堆包,我怀疑这可能与它有关。这是一个屏幕截图,比较了四个设备的输出,jpegpdfsvgpng

虽然我第一次在 Rstudio 中使用 rcorr 包遇到了问题,但当我从命令行作为 Rscript 并使用基本箱线图运行时,就会出现问题。

require(corrplot)
M<-cor(mtcars)
corrplot(M, method="circle")
dev.off()
pdf("test2.pdf")
corrplot(M, method="circle")
dev.off()
png("test2.png")
corrplot(M, method="circle")
dev.off()
jpeg("test2.jpeg")
corrplot(M, method="circle")
dev.off()
svg("test2.svg")
corrplot(M, method="circle")
dev.off()

pdf("test3.pdf")
boxplot(M, method="circle")
dev.off()
png("test3.png")
boxplot(M, method="circle")
dev.off()
jpeg("test3.jpeg")
boxplot(M, method="circle")
dev.off()
svg("test3.svg")
boxplot(M, method="circle")
dev.off()


会话信息:


> sessionInfo()
R version 3.6.2 (2019-12-12)
Platform: x86_64-generic-linux-gnu (64-bit)
Running under: Clear Linux OS

Matrix products: default
BLAS/LAPACK: /usr/lib64/libopenblas_nehalemp-r0.3.7.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] showtext_0.7     showtextdb_2.0   sysfonts_0.8     cairoDevice_2.28 corrplot_0.84   

loaded via a namespace (and not attached):
[1] compiler_3.6.2 tools_3.6.2   

输出:

图形设备输出比较 问题不仅限于 rcorr

4

4 回答 4

2

R 和系统上的字体之间可能存在问题。检查 Helvetica 系列使用的字体 R。我遇到了同样的问题,并且能够通过删除字体包(来自 Arch Linux 的 AUR 的 adobe-base-14-fonts)来解决它。

另一个对我有用的解决方案是Cairo_png使用cairoDevice. 问题在于它不能修复 RStudio 中的 Plots 选项卡。

您可以编辑/添加~/.config/fontconfig/fonts.conf以包含别名部分,这是一个示例:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias binding="same">
  <family>Helvetica</family>
  <prefer>
    <family>Nimbus Sans</family>
  </prefer>
</alias>
</fontconfig>

使用 Nimbus Sans、Arial 或任何其他公制兼容字体。这可能会影响尝试在您的系统上使用 Helvetica 的其他程序,但您至少可以查看它是否真的是问题所在。

于 2020-01-22T17:32:33.010 回答
0

升级到 R 4.1 后,我遇到了类似的问题。以下对我有用:

  1. 安装“ragg”包及其依赖项
  2. 在工具菜单中,打开全局选项
  3. 在常规部分中选择“图形”选项卡
  4. 选择“AGG”后端

您可能需要重新启动 R 会话才能使其处于活动状态

干杯。

于 2022-01-10T14:28:21.820 回答
0

我在 R-studio 中遇到了同样的问题,堆栈溢出的一些线程建议安装 helvetica、缺少字体库或更改字体配置文件等。

对我有用的是简单地从 R studio Tools -Global Options - Appearance 中选择一种字体。在这种情况下,我选择了 ubuntu mono 然后在我的一个 R 工作室脚本中,我只运行了这一行(我在 diff.thread 中找到了),我所有的情节都开始工作了,我什至不必将它添加到其他脚本中:

par(family ="Ubuntu Mono")

而且我不需要改变任何其他东西。

*(我通过 Anaconda 环境使用 Ubuntu 20.4 和 R Studio 1.1.456)

于 2021-09-24T14:32:59.297 回答
0

您是否运行BiocManager::valid()以确保所有软件包都是最新的?这可能会解决不兼容问题。

于 2020-01-18T02:40:11.657 回答