我正在努力让 ggplot 在非标准字符集 [俄语] 中正确显示轴标签。使用此类字符串时,ggplot 标记轴,例如
\ U+0441 U+043D U+0433
当我将名称保存为单独的变量并将它们绘制为标签时,Ggplot 得到正确的编码geom_text()
转换数据帧的格式也无济于事:
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 代码不一致。在上面的示例中,问题仅限于轴标签。这是因为对于轴标签,字符串是从数据表中获取的,如果相同的行存储在字符串或矩阵中,它以某种方式处理编码不同?