带下标的Unicode字符

时间:2015-03-19 16:43:57

标签: r unicode plotmath

我想添加一个Unicode字符,它有两个字母作为我在R中的情节图例的下标。 角色是带有重音符号(ř)的r,两个字母是i和j。

我已经看过这个问题:Unicode character with superscript并试图让答案适应我的问题。

以下是我的尝试:

plot(1,pch=NA,ylab="",xlab="",axes=F)
legend("top",legend=paste("1-","\u{0159}"),bty ="n",bg = "white",cex=2)
legend("center",legend=paste("1-","\u{0159}","\u{0069}","\u{006A}"),bty="n",bg = "white",cex=2)
legend("bottomleft",legend=expression("1-"*"\u0159"["\u0069"*"\u006A"]),bty="n",bg = "white",cex=2)
legend("bottomright", legend = quote("1-" *"\u0159"["\u0069"*"\u006A"]),bty="n",bg = "white",cex=2)

结果图可以在下面找到

enter image description here

Unicode字母和下标本身都可以正常工作,但不能一起工作。 使用[]的任意组合的paste()确实会返回错误,但我认为这是预期的,因为粘贴无法处理下标的[]。

CRAN上的常见问题解答网站可能会提示我正在使用Windows,但我不确定如何实现这一点:

  

3.6我在R控制台上看不到带重音符的字符,例如?text。

     

您需要在Rconsole中指定支持正在使用的编码的字体(请参阅Q5.2)。这曾经是Windows早期版本中的一个问题,但现在很难找到一个没有的字体。

     

在Rterm中支持这些字符取决于运行它的环境(终端窗口和shell,包括语言环境和代码页设置)以及终端窗口使用的字体。这些通常是在传统的DOS设置上,需要改变。

1 个答案:

答案 0 :(得分:3)

它与系统区域设置有关,例如,如果你试试

# intToUtf8(345)
# [1] "ř"
# iconv(intToUtf8(345), "utf-8", localeToCharset())
# [1] "r"

这应该解决它(我使用捷克语,但其他语言环境可能也会起作用):

Sys.setlocale("LC_CTYPE", "czech")
# [1] "Czech_Czech Republic.1250"
text(..., labels = quote("\u{0159}"[ij]))