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

如何在ggplot2中复刻538风格的文字描边:为百分比添加圆润白色描边

当然可以!在ggplot2里复刻538风格的文字白色圆润描边完全没问题,我常用两个方法来实现,给你详细说说:

方法一:用shadowtext包专门实现描边

这个包就是为文字阴影/描边设计的,参数调节起来特别直观,完美适配538那种圆润白边的需求。

首先安装并加载需要的包:

install.packages("shadowtext")
library(ggplot2)
library(shadowtext)

然后构造示例数据,咱们用百分比标签来演示:

set.seed(123) # 固定随机数让结果可重复
df <- data.frame(
  x = 1:5,
  y = 1:5,
  pct = paste0(round(runif(5)*100), "%")
)

接下来画图,核心是用geom_shadowtext()代替普通的geom_text(),通过参数控制描边的样式:

ggplot(df, aes(x, y)) +
  # 先画个深色点当背景,模拟538的图表元素
  geom_point(size = 12, color = "#2d3436") +
  # 关键:添加带白色描边的百分比文字
  geom_shadowtext(
    aes(label = pct),
    color = "black",          # 文字本身的颜色
    shadow.color = "white",   # 描边颜色(538用白色)
    shadow.radius = 0.6,      # 控制描边的圆润程度,值越大越圆润
    shadow.size = 1.8,        # 描边的粗细,按需调整
    size = 6                  # 文字大小
  ) +
  # 模拟538的浅灰背景
  theme_minimal() +
  theme(
    panel.background = element_rect(fill = "#f5f5f5", color = NA),
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank()
  )

方法二:用ggtext包结合CSS样式

如果你已经在用ggtext处理富文本,也可以用CSS的text-shadow属性来实现类似效果,通过重复阴影参数模拟圆润的描边:

先安装加载包:

install.packages("ggtext")
library(ggplot2)
library(ggtext)

给数据添加带CSS样式的标签:

df$styled_pct <- paste0(
  "<span style='text-shadow: 0 0 2px white, 0 0 2px white, 0 0 2px white;'>",
  df$pct,
  "</span>"
)

然后用geom_richtext()渲染带样式的文字:

ggplot(df, aes(x, y)) +
  geom_point(size = 12, color = "#2d3436") +
  geom_richtext(
    aes(label = styled_pct),
    fill = NA,                # 去掉文字背景
    label.color = NA,         # 去掉文字边框
    size = 6
  ) +
  theme_minimal() +
  theme(
    panel.background = element_rect(fill = "#f5f5f5", color = NA),
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank()
  )

两种方法都能实现你要的效果,shadowtext的参数更直接,适合快速调整描边的圆润度;ggtext则更灵活,能和其他富文本样式结合使用。你可以根据自己的需求选~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:54:44