r-如何在ggplot方面将x轴文本中的一些单词斜体



我想在R ggplot2中用斜体显示轴文本(而不是标题(中术语的一部分。

我有一些细菌物种的名字,我应该用斜体写,此外,我还有菌株的名字,应该是纯文本的。

下面是我的一个例子:

我的数据帧看起来像这个

MyDF <- data.frame(Activity=rep(c("Activity 1", "Activity 2", "Activity 3"), each = 6), 
Bacteria = rep(c("Escherichia coli Strain 1", "Escherichia coli Strain 2",
"Escherichia coli Strain 3", "Escherichia coli Strain 4",
"Escherichia coli Strain 5", "Escherichia coli Strain 6"), each=3),
Facet=rep(c("Facet 1", "Facet 1","Facet 2","Facet 2","Facet 2","Facet 2"), each=3),
Production=rep(1:18))
MyDF
Activity                  Bacteria   Facet Production
1  Activity 1 Escherichia coli Strain 1 Facet 1          1
2  Activity 1 Escherichia coli Strain 1 Facet 1          2
3  Activity 1 Escherichia coli Strain 1 Facet 1          3
4  Activity 1 Escherichia coli Strain 2 Facet 1          4
5  Activity 1 Escherichia coli Strain 2 Facet 1          5
6  Activity 1 Escherichia coli Strain 2 Facet 1          6
7  Activity 2 Escherichia coli Strain 3 Facet 2          7
8  Activity 2 Escherichia coli Strain 3 Facet 2          8
9  Activity 2 Escherichia coli Strain 3 Facet 2          9
10 Activity 2 Escherichia coli Strain 4 Facet 2         10
11 Activity 2 Escherichia coli Strain 4 Facet 2         11
12 Activity 2 Escherichia coli Strain 4 Facet 2         12
13 Activity 3 Escherichia coli Strain 5 Facet 2         13
14 Activity 3 Escherichia coli Strain 5 Facet 2         14
15 Activity 3 Escherichia coli Strain 5 Facet 2         15
16 Activity 3 Escherichia coli Strain 6 Facet 2         16
17 Activity 3 Escherichia coli Strain 6 Facet 2         17
18 Activity 3 Escherichia coli Strain 6 Facet 2         18

用于生成绘图的代码是:

MyPlot<- ggplot(MyDF, aes(x=Bacteria, y=Production, fill= Activity)) + 
geom_bar(stat="identity", 
position=position_dodge()) +
facet_grid(Activity ~ Facet, drop=FALSE, scales="free", space = "free_x")+
theme(axis.text.x = element_text(angle = 55, hjust = 1))

MyPlot

使用ggtext包是我使用的方法,尽管可能还有其他方法。然后,您可以在文本字符串中添加一些markdown或html样式的格式:

library(ggtext)
MyDF$Bacteria_ital <-gsub("(.*)( Strain.*)","<i>\1</i>\2" , MyDF$Bacteria)

ggplot(MyDF, aes(x=Bacteria_ital, y=Production, fill= Activity)) + 
geom_bar(stat="identity", 
position=position_dodge()) +
facet_grid(Activity ~ Facet, drop=FALSE, scales="free", space = "free_x")+
theme(axis.text.x = element_text(angle = 55, hjust = 1)) +
theme(axis.text.x = ggtext::element_markdown())

替代方案:

library(glue)
library(ggtext)
library(tidyverse)
MyDF1 <- MyDF %>% 
mutate(Bacteria_name = word(Bacteria, 1,2, sep=" "),
Strain_name = word(Bacteria, -2,-1, sep=" ")) %>% 
mutate(Bacteria_new = glue("<i>{Bacteria_name }</i>{Strain_name}")) %>% 
ggplot(aes(x=Bacteria_new, y=Production, fill= Activity)) + 
geom_bar(stat="identity", 
position=position_dodge()) +
facet_grid(Activity ~ Facet, drop=FALSE, scales="free", space = "free_x")+
theme(axis.text.x =  element_markdown(angle = 55, size = 18, hjust =1))
)

最新更新