R语言生成多语种词云时外文字符不显示,求解决方案
解决多语种词云字符不显示问题
核心原因
你的问题出在默认字体不支持非拉丁语系字符(比如中文、阿拉伯语、日语等),换用支持多语种的字体就能解决。
简单解决步骤
1. 安装并加载必要的包
先安装showtext包(用来加载自定义字体)和ggwordcloud(比原生geom_text_wordcloud更稳定):
install.packages(c("showtext", "ggwordcloud")) library(showtext) library(ggplot2) library(ggwordcloud)
2. 加载支持多语种的字体
推荐用谷歌的Noto Sans字体(支持全球绝大多数语种),可以直接通过showtext在线加载:
# 在线加载Noto Sans字体 font_add_google("Noto Sans", "noto") # 启用showtext,让ggplot能识别加载的字体 showtext_auto()
如果不想在线加载,也可以用系统自带的多语种字体:
- Windows:用
font_add("yahei", "simhei.ttf")(微软雅黑) - Mac:用
font_add("pingfang", "PingFang SC.ttc") - Linux:先通过包管理器安装
fonts-noto,再用font_add("noto", "Noto Sans")
3. 重新绘制词云
修改代码,指定字体为我们加载的字体:
set.seed(42) data("thankyou_words_small") ggplot(thankyou_words_small, aes(label = word, size = speakers, color = speakers)) + geom_text_wordcloud(area_corr = TRUE, rm_outside = TRUE, family = "noto") + # 指定加载的字体 scale_size_area(max_size = 24) + theme_minimal() + scale_color_gradient(low = "darkblue", high = "lightblue")
额外提示
- 如果仍有个别字符不显示,可换用更针对性的字体,比如Noto Sans CJK(专门适配中日韩字符)
- 运行
showtext_auto()后,后续的ggplot图表都会自动使用加载的字体,无需重复设置
内容的提问来源于stack exchange,提问作者Siobhan
相关产品推荐
相关产品推荐

