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

时间:2016-02-28 12:46:23

标签: r unicode cairo

我们的系统管理员刚刚将我们的操作系统升级到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

有关如何让太阳能符号出现的任何提示?

2 个答案:

答案 0 :(得分:3)

也许您的文本编辑器正在使用latin1,因此您可以将latin1字符发送到您的控制台。

查看编码

plot(1, xlab=iconv('ʘ', from='latin1', to="UTF-8"))

和/或尝试

pushViewController:animated:

但要小心,编码可能会在应对时发生变化。 如果使用Notepad ++,则可以在文本编辑器之间转换不同的编码。

答案 1 :(得分:1)

注意:我想你应该首先使用新系统:

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”以外的其他字体。请参阅包含开罗字体部分的?X11points函数的帮助页面有一个名为TestChars的函数,可以让您以各种字体将字符字形打印到输出设备。在这种情况下,您的输出设备可能是cairopdfx11。在我的设备(UNIX的Mac分支)上,Arial字体具有以下输出:

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

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

enter image description here