繁体   English   中英

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

[英]R plots some unicode characters but not others

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

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

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

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

看看编码

Encoding('ʘ')

和/或尝试

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

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

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

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 )

在此输入图像描述

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

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

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

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM