R графики: поврежденные / отсутствующие символы для устройств, отличных от pdf - PullRequest
3 голосов
/ 18 января 2020

У меня проблема с тем, что некоторые графические устройства печатают недостающие глиф-боксы вместо символов. На самом деле, единственное устройство, которое я пробовал до сих пор, которое отображает символы, это PDF. Так как я недавно обновил R и пересобрал кучу пакетов, я подозреваю, что это как-то связано Вот снимок экрана, на котором сравниваются выходные данные четырех устройств: jpeg, pdf, svg и png.

. Хотя я впервые столкнулся с проблемой в Rstudio с пакетом rcorr, проблема возникает, когда Я запускаю как Rscript из командной строки и с основами c boxplot.

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   

Вывод:

comparison of graphics devices output problem is not limited to rcorr

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Может быть проблема между R и шрифтом в вашей системе. Проверьте, какой шрифт R используется для семейства Helvetica. У меня была та же проблема, и я смог ее исправить, удалив пакет шрифтов (adobe-base-14-fonts из AUR Arch Linux).

Еще одним решением, которое мне помогло, было использование Cairo_png функция от cairoDevice. Проблема в том, что он не исправляет вкладку Plots в RStudio.

Вы можете отредактировать / добавить ~/.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 или любой другой metri c -совместимый шрифт. Это может повлиять на другие программы, которые пытаются использовать Helvetica в вашей системе, но вы можете по крайней мере увидеть, действительно ли это проблема.

0 голосов
/ 18 января 2020

Вы запускаете BiocManager::valid(), чтобы убедиться, что все пакеты обновлены? Это может исправить несовместимости.

...