【发布时间】:2012-11-28 23:44:25
【问题描述】:
我正在努力让 ggplot 在非标准字符集 [俄语] 中正确显示轴标签。使用此类字符串时,ggplot 标签轴,例如
\U+0441 U+043D U+0433
当我将名称保存为单独的变量并使用 geom_text() 将它们绘制为标签时,Ggplot 会正确编码
转换数据框的格式也无济于事:
db$variable=sapply(db$variable,function(row) iconv(row,to='UTF-8'))导致乱码,大概是因为数据帧中的数据已经编码为UTF-8了
我可以通过使用scale_x_discrete( labels=names) 的自定义轴来完成这项工作,但这有点笨拙,尤其是当数据缺少值时。有什么方法可以让 ggplot 一开始就正确显示这些字符?
编辑
似乎有些挠头
Sys.setlocale("LC_CTYPE","russian")
将解决问题。不过,我仍然不明白为什么 R/ggplot 在什么情况下会接受 UTF8 代码不一致。在上面的示例中,问题仅限于轴标签。这是因为对于轴标签,字符串是从数据表中获取的,如果相同的行存储在字符串或矩阵中,它以某种方式处理编码不同?
【问题讨论】:
-
听起来你回答了你的问题。您会提出
Sys.setlocale("LC_CTYPE","russian")的解决方案作为答案,然后提出一个关于 ggplot 不一致的新问题吗?这也会让你的 ggplot 问题得到更多关注:)