gpt4 book ai didi

R 绘制一些 unicode 字符,但不绘制其他字符

转载 作者:行者123 更新时间:2023-12-01 22:31:46 26 4
gpt4 key购买 nike

我们的系统管理员刚刚将我们的操作系统升级到 SLES12SP1。我重新安装了 Rv3.2.3 并尝试绘图。我使用 cairo_pdf 并尝试绘制 x 标签为 \u0298 (即太阳符号)的绘图,但它不起作用:标签只是显示为空白。例如:

cairo_pdf('Rplots.pdf')
plot(1, xlab='\u0298') # the x-label comes up blank
dev.off()

这曾经有效,但由于某种原因它不再有效。它适用于其他角色,例如

cairo_pdf('Rplots.pdf')
plot(1, xlab='\u2113') # the x-label comes up with the \ell symbol
dev.off()

当我粘贴太阳符号时,即

plot(1, xlab='ʘ')

然后我收到警告

Warning messages:
1: In title(...) :
conversion failure on 'ʘ' in 'mbcsToSbcs': dot substituted for <ca>

机器是德国的,但我使用的是美国英语 UTF-8 语言环境:

> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: SUSE Linux Enterprise Server 12 SP1

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

有关如何显示太阳符号的任何提示?

最佳答案

注意:我想对于新系统,您应该首先执行以下操作:

capabilities() #And see what the result for cairo is.

有几个想法,尽管其中一个需要知道您正在使用什么字体,因此 l10n_info()$MBCSnames(X11Fonts()) 的输出可能是需要。

选项 1) Hershey 字体将所有占星符号作为特殊转义字符。第 4 页的输出:

 demo(Hershey)   # has \\SO as the escape sequence for the "solar" symbol.

因此,查看 draw.vf.cell 函数的代码,我们发现它使用 text 函数来绘制这些字符,从而使用它来标记轴需要将 xpd=TRUE 添加到参数中:

plot(1, xlab="") ; text(1, .45, "\\SO" , vfont=c("serif", "plain"), xpd=TRUE )

enter image description here

选项 2) 找到您选择的字体的太阳符号。您可以尝试将字体设置为“Helvetica”以外的字体。请参阅?X11,其中有关于 Cairo 字体的部分。 points 函数的帮助页面有一个名为 TestChars 的函数,可让您将各种字体的字符字形打印到输出设备。在这种情况下,您的输出设备可能是 cairopdfx11。在我的设备(UNIX 的 Mac 分支)上,Arial 字体具有以下输出:

   png(type="cairo-png");plot(1, xlab="\u0298");dev.off()

我多年来对类似问题的观察使我相信开罗图形在跨平台上更加可靠。但由于 R 可以在没有 cairo 支持的情况下编译,所以这并不是确定的事情。

enter image description here

关于R 绘制一些 unicode 字符,但不绘制其他字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com