对于我的ggplot图,我想在条形图上标记类别,第一个单词用斜体表示,而后面的单词用非斜体表示。我希望类别标签如下所示:
葡萄球菌(OTU 1)
链球菌(OTU 300)
我找到了一些示例,expression()
在这些示例中我可以使用斜体显示一些类别标签,但是我希望能够对许多不同的类别执行此操作。
进行绘图的代码如下(但我的数据还有许多要绘制的条)。
library(ggplot2)
data <- data.frame(
bactname = c("Staphylococcaceae", "Moraxella", "Streptococcus", "Acinetobacter"),
OTUname = c("OTU_1", "OTU_2", "OTU_3", "OTU_4"),
value = c(-0.5, 0.5, 2, 3)
)
data$name <- paste0(
data$bactname, " (", data$OTUname, ")"
)
data$name <- factor(
data$name,
levels = data$name[order(data$value)], ordered = TRUE
)
ggplot(data, aes(name, value)) +
geom_col() + coord_flip()
由reprex软件包(v0.3.0)创建于2020-01-28
您可以制作的向量expression
,并将其应用于中的labels
参数scale_x_discrete
:
labs <- sapply(
strsplit(as.character(data$name), " "),
function(x) parse(text = paste0("italic('", x[1], "')~", x[2]))
)
ggplot(data, aes(name, value)) +
geom_col() + coord_flip() +
scale_x_discrete(labels = labs)
如果标签中有空格,例如OTU 100
,则可能要用代字号代替空格,例如OTU~100
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句