将轴刻度标签中的一个字符更改为斜体,同时保留多行[重复]

Posted

技术标签:

【中文标题】将轴刻度标签中的一个字符更改为斜体,同时保留多行[重复]【英文标题】:Changing one character in axis tick labels to italic while keeping multiple lines [duplicate] 【发布时间】:2021-01-11 23:23:44 【问题描述】:

我有一个来自 ggplot2 的 geom_col,带有分类轴刻度的标签,如下所示:

该图是使用以下代码创建的:

library(tidyverse)

samplecounts=as.data.frame(c(1:4))
samplecounts$variable2=c("cat1","cat2","cat3","cat4")
names(samplecounts)[1]="variable1"

my.labels=c("Count category 1\n(n=1)","Count 2 of a different length\n(n=1)",
            "Countegory 3\n(n=1)","Count 4 cat\n(n=1)")

a=ggplot(data=samplecounts,aes(variable2,variable1))+
  geom_col(color='black')+
  scale_x_discrete(labels=my.labels) +
  coord_flip()
a

我的目标是仅将每个轴刻度标签中的“n”字符斜体。我已经在轴标题中看到了这样做的解决方案。在这种情况下,轴标题是“variable2”。我正在寻找更改轴刻度标签“计数类别 4 (n=1) 等”。

旁注,斜体功能在我当前版本的 R 中不存在。我正在运行 R 4.0.2。

【问题讨论】:

***.com/questions/39282293/… 也许对你有帮助 【参考方案1】:

尝试使用ggtext 包并将** 添加到您的文本链中,并在您的主题中使用element_mardown(),如下所示(更新:在markdown 语言中,换行符使用<br> 而不是\n强>):

library(tidyverse)
library(ggtext)
#Data
samplecounts=as.data.frame(c(1:4))
samplecounts$variable2=c("cat1","cat2","cat3","cat4")
names(samplecounts)[1]="variable1"

my.labels=c("Count category 1<br>*(n=1)*","Count 2 of a different length<br>*(n=1)*",
            "Countegory 3<br>(*n=1*)","Count 4 cat<br>*(n=1)*")
#Plot
ggplot(data=samplecounts,aes(variable2,variable1))+
  geom_col(color='black')+
  scale_x_discrete(labels=my.labels) +
  theme(axis.text.y = element_markdown())+
  coord_flip()

输出:

【讨论】:

斜体有效,但现在 (n=1) 部分仍与类别标题位于同一行。注意到原始图中多条线的预期位置与此图之间的差异吗? 在文档中找到了解决方案。 使用 ggtext 而不是 \n 插入换行符,如上面的代码所示。 @coconn41 现在更新了,你在评论里打败了我。检查新的解决方案,让我知道它是否有效:)

以上是关于将轴刻度标签中的一个字符更改为斜体,同时保留多行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将轴刻度标签格式化为绘图中的百分比

如何使用 pyqtgraph 的 GLViewWidget 将轴特征(标签、刻度、值)添加到 3D 图中?

给轴和刻度线标记优先于绘制线

氧图。如何将轴旁边的值格式从 1000 更改为 1k

d3中的多行svg文本轴刻度

在 x 轴上的离散组之间添加刻度