4

我正在尝试将越南语标签放在 R 图中。我使用 RStudio 并使用 UTF-8 编码保存我的代码。它很好地处理了我在代码中输入的越南语字符,我的意思是代码中的所有内容都正确显示。但是,在我制作的图表中,虽然许多字符显示正常,但有几个重要字符没有正确显示,包括

đ - 错误地显示为 d

ư - 错误地显示为 u

ơ - 错误地显示为 o

ă - 错误地显示为

不幸的是,这使我的图表看起来不专业且不值得信赖。

如果有人能帮我解决这个问题,我将不胜感激。

非常感谢!

董里


@DWin:我在 Windows 7 上,这是我的 sessionInfo()

R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] MASS_7.3-17    MatchIt_2.4-20 tools_2.15.0  

@krlmlr:这是我的简单图表代码:

knorelative.count <- matrix(nrow=5,ncol=1)
knorelative.count[,1] <- c(1579,638,215,100,120)

par(mar=c(2,4,4,2))
barplot(prop.table(knorelative.count),beside=TRUE,
        yaxt="n",ylim=c(0,.6),
        legend=c("không ai biết",
                 "không biết nhiều hơn biết",
                 "nửa biết, nửa không biết",
                 "biết nhiều hơn không biết",
                 "tất cả đều biết"),
        main="Người khác trong gia đình, họ hàng biết hay không")
axis(2,at=seq(0,.6,.1),labels=paste(100*seq(0,.6,.1),"%",sep=""),las=1)

当我运行它时,主标题中的 đ 和两个ơ 和图例中的 đ 变成 d 和 o。

4

3 回答 3

4

通过十六进制代码指定 unicode 字符通常更安全:

plot(1:4,rep(1,4),pch=c("\u0111","\u01B0","\u01A1","\u0103"),cex=4)
于 2013-03-01T00:35:31.130 回答
2

对于遇到同样问题的任何越南人,这里有一个使用 James 建议的十六进制代码进行修复的示例:

打印(“trường”)

[1] “真”

打印(“tr\u01B0ờng”)

[1] "trường"

虽然我可以在我的 R 控制台中输入越南语,在这个例子中是单词 trường,但是任何类型的输出(例如打印、图形)都无法显示字符ư。用十六进制代码替换ư 可以修复输出。

(注意:我之前使用了 paste 函数,但后来根据 James 的建议对其进行了编辑,将十六进制代码粘贴在字符串中。)

我非常感谢以这种方式学习。我将为我目前正在撰写的报告这样做。

董里

于 2013-03-01T16:25:44.360 回答
1

您将代码保存在另一个文件中。示例:文件夹R/graph_display.R 之后运行此代码

eval(parse("R/graph_display.R", encoding = "UTF-8"))
于 2019-10-20T05:07:40.897 回答