You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R绘图中实现竖排CJK文字添加的便捷方法有哪些?

R 图表竖排CJK文字简便实现方案

目前有两种比手动调用ragg包OpenType特性更简便的实现方式,同时覆盖点/多边形标注、任意文本块两类使用场景:

方案1:ggplot2生态下使用ggtext包

不需要手动配置vrt2特性,直接通过CSS样式控制竖排逻辑:

  • 点/多边形标注:调用geom_richtext(),指定竖排样式即可实现自动适配竖排字形,不需要额外旋转调整
    示例代码:
    library(ggplot2)
    library(ggtext)
    
    # 基础散点图示例
    ggplot(mtcars, aes(mpg, wt)) +
      geom_point() +
      # 在坐标(20, 3)处添加竖排标注
      geom_richtext(
        aes(x = 20, y = 3, label = "<span style='writing-mode: vertical-rl;'>竖排标注测试</span>"),
        fill = NA, label.colour = NA, # 去掉标注的背景和边框
        angle = 90 # 适配坐标轴方向
      )
    
  • 任意文本块:调用annotation_richtext(),指定放置坐标即可,支持混合横竖排文本、标点自动适配竖排排版规则,适合做图表说明类的文本块。

方案2:基础绘图系统原生实现

如果不需要使用ggplot2,基础绘图的text()函数搭配支持竖排的CJK字体即可直接实现,不需要额外加载第三方渲染包:

# 预先指定支持竖排的CJK字体,例如Noto Sans CJK SC、思源黑体、微软雅黑、苹方等
par(family = "Noto Sans CJK SC")
# 基础绘图
plot(1:10, 1:10, type = "n")
# 点标注
points(5, 5)
text(5, 5.2, labels = "竖排测试标注", srt = 90, adj = c(0.5, 0.5))
# 任意位置文本块
text(8, 8, labels = "独立竖排文本块", srt = 90, adj = c(0, 0), cex = 1.2)

通用注意事项

  • 两种方案都要求使用的字体本身内置竖排CJK字形,常用的开源及系统预装CJK字体基本都满足该要求
  • 若需要实现从左到右的竖排排版,将writing-mode参数改为vertical-lr(ggtext方案),或将srt参数设置为270(基础绘图方案)即可

内容的提问来源于stack exchange,提问作者Sjiveru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:27:09