我有一个必要的理由来使用‘ggtext’

这不是我想要的结果,你可以看到'2-'和'O'之间有很大的差距

library(ggtext)
library(tidyverse)
df <- tibble(
  label = c(
    'SO<sub>4</sub><sup>2-</sup>'
  ),
  x = c(.5),
  y = c(.5),
)
ggplot(df) +
  aes(
    x, y, label = label
  ) +
  geom_richtext() +
  xlim(0, 1)+ 
  ylim(0, 1)

enter image description here

这是我想要的结果,但是使用ggtext的html标记sub和sup无法实现这一点

enter image description here

推荐答案

我找不到任何暗示HTML或markdown支持"top"概念(也就是上标和下标的垂直对齐)的引用;有些答案甚至说"不可能",尽管我不能肯定地说是这样的.

这是可能的,使用基本的geom_label和绘图数学表达式.

既然你说你有理由使用ggtext,有没有可能用这个功能来分隔标签呢?

df <- tibble(
  label = c(
    'SO<sub>4</sub><sup>2-</sup>',
    "'SO'[4]^'2-'"
  ),
  x = c(.5, .5),
  y = c(.4, .6),
  parse = c(FALSE, TRUE)
)
ggplot(df) +
  aes( x, y, label = label ) +
  geom_richtext(data = ~ filter(., !parse)) +
  geom_label(data = ~ filter(., parse), parse=TRUE) +
  xlim(0, 1) + ylim(0, 1)

ggplot with two labels, the first has the superscript and subscript properly aligned vertically, the second is the original and has the subscript first and the superscript slightly to the right

如果需要,您可以在SO后面添加一些空格,以使其不那么拥挤;例如,"'SO '[4]^'2-'"会导致

same plot as above, with a little more horizontal space between the

R相关问答推荐

更改网格的crs以匹配简单要素点对象的crs

使用Shiny组合和显示复制和粘贴的数据

将模拟变量乘以多个观测结果中的模拟变量

以R为基数排列奇数个图

在(g)子中使用asserable字符

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

根据多个条件增加y轴高度以适应geom_text标签

如何得到R中唯一的组合群?

将饼图插入条形图

使用data.table::fcase()而不是dplyr::case_When()时保持值

以相同的方式对每个表进行排序

您是否可以使用facet_rap设置一个较低的限制来对ggmap上的比例中断进行zoom ?

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

将箭头绘制在图形外部,而不是图形内部

在带有`R`中的`ggmosaic`的马赛克图中使用图案而不是 colored颜色

有没有可能用shiny 的书签恢复手风琴面板?

按列中显示的配对组估算NA值

将统计检验添加到GGPUBR中的盒图,在R

无法将条件case_when()应用于使用!!创建的新变量Mutations

Broom.Mixed::Augment不适用于Sample::分析