how to display đ, ư, ơ, ă in R graphs

空扰寡人 提交于 2020-01-01 15:39:06

问题


I am trying to put Vietnamese labeling in R graphs. I use RStudio and save my code using UTF-8 encoding. It handles the Vietnamese characters I put in the code well, I mean everything shows up in the code properly. However, in the graphs I make, while many characters display OK, several important ones do not show up properly, including

đ - which displays incorrectly as d

ư - which displays incorrectly as u

ơ - which displays incorrectly as o

ă - which displays incorrectly as a

Unfortunately this makes my graphs look unprofessional and untrustworthy.

I would really appreciate it if someone can help me figure this out.

Thanks much!

Trang


@DWin: I am on Windows 7, and here is my 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: Here's my code for a simple graph:

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)

When I run this, the đ in the main title and the two ơ's and the đ in the legend turn into d and o.


回答1:


You are often safer specifying unicode characters by their hex codes:

plot(1:4,rep(1,4),pch=c("\u0111","\u01B0","\u01A1","\u0103"),cex=4)



回答2:


For any Vietnamese folks out there who run into the same problem, here's an example for the fix using hex codes suggested by James:

print("trường")

[1] "truờng"

print("tr\u01B0ờng")

[1] "trường"

While I can type Vietnamese, in this example the word trường, into my R console ok, any kind of output (e.g. print, graph) fails to display the character ư. Replacing ư with the hex code fixes the output.

(Note: I used the function paste earlier, but then edited this based on James's suggestion to stick the hex code in the character string.)

I am so thankful to learn this way. I will do this for the report I am currently writing.

Trang




回答3:


Uppercase like this

plot(
    1:4,
    rep(1,4), 
    pch=c("\U0110","\u01AF","\u01A0","\u0102"),
    cex=4
)


来源:https://stackoverflow.com/questions/15147769/how-to-display-%c4%91-%c6%b0-%c6%a1-%c4%83-in-r-graphs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!