我们的系统管理员刚刚将我们的操作系统升级到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
有关如何让太阳能符号出现的任何提示?
答案 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()$MBCS
和names(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的函数,可以让您以各种字体将字符字形打印到输出设备。在这种情况下,您的输出设备可能是cairopdf
或x11
。在我的设备(UNIX的Mac分支)上,Arial字体具有以下输出:
png(type="cairo-png");plot(1, xlab="\u0298");dev.off()
我多年来对类似问题的观察使我相信开罗图形更可靠地跨平台。但是由于R可以在没有cairo支持的情况下编译,所以这不是一个确定的事情。