【问题标题】:Unicode character with subscript带下标的 Unicode 字符
【发布时间】:2015-05-22 21:43:39
【问题描述】:

我想在 R 中的情节图例中添加一个有两个字母作为下标的 Unicode 字符。 字符是带重音符号 (ř) 的 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)

结果图如下所示

Unicode 字母和下标都可以单独使用,但不能一起使用。 paste() 与 [ ] 的任意组合确实会返回错误,但我认为这是意料之中的,因为 paste 无法处理下标的 [ ]。

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

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

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

Rterm 对这些字符的支持取决于运行它的环境(终端窗口和 shell,包括区域设置和代码页设置)以及终端窗口使用的字体。这些通常在旧版 DOS 设置上,需要更改。

【问题讨论】:

  • 使用您链接到的答案,这对我有用plot.new(); text(0.5, 0.7, labels = quote("1 - " * '\u{0159}'[ij]))。您示例中的 3 和 4 也适用于我
  • @rawr 不幸的是,您的解决方案对我不起作用。我正在使用 RStudio,所以我也尝试使用纯 R,但也没有任何版本有效。
  • Nadja,您使用的是什么操作系统,作为您的最后两个示例和 rawr 的代码,都在 ubuntu 14.04,Rv3.1.3 上按预期呈现
  • @user20650 我使用的是 Windows 7
  • 嗨@konvas;感谢您的建议,但同样的问题。我想知道这是否是语言环境或编码问题,但如果是这种情况,奇怪的是重音字母在没有下标的情况下按预期显示。 legend=quote("\u0159") 显示重音字母,但添加下标 legend=quote("\u0159"[i]) 会删除它。与 OP 一样,这不适用于 W7、R3.1.1。

标签: r unicode plotmath


【解决方案1】:

它与系统语言环境有关,例如如果你尝试

# 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]))

【讨论】:

  • 好东西,干杯。我曾尝试将语言环境设置为德语和法语,但没有任何乐趣。 ..捷克语就是答案!
  • @user20650 哈哈,是的,这是我想到的第一个具有此字符的语言,尽管我相信会有很多。您是否知道为什么在不涉及下标的情况下它可以在不更改语言环境的情况下工作,例如在quote("\u{0159}") 中?
  • 没有线索,我也觉得很奇怪。所以也许真正的答案是不要使用 Windows
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 2016-09-30
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
相关资源
最近更新 更多