这可能最终成为一个表达式或调用问题,但我正在尝试有条件地格式化单个轴标签。
在下面的示例中,我想选择性地加粗其中一个轴标签:
library(ggplot2)
data <- data.frame(labs = c("Oranges", "Apples", "Cucumbers"), counts = c(5, 10, 12))
ggplot(data = data) +
geom_bar(aes(x = labs, y = counts), stat="identity")`
这里有一个类似的问题here,但解决方案涉及theme
和element_text
。我试图直接使用坐标轴标签。
我可以手动完成如下操作:
breaks <- levels(data$labs)
labels <- breaks
labels[2] <- expression(bold("Cucumbers"))
ggplot(data = data) +
geom_bar(aes(x = labs, y = counts), stat="identity") +
scale_x_discrete(label = labels, breaks = breaks)
但是,如果我尝试通过索引而不是手动输入“Cucumbers”来完成它,我会得到以下错误:
breaks <- levels(data$labs)
labels <- breaks
labels[2] <- expression(bold(labels[2]))
ggplot(data = data) +
geom_bar(aes(x = labs, y = counts), stat="identity") +
scale_x_discrete(label = labels, breaks = breaks)
这很有道理,因为它没有评估labels[2]
。但是,是否有人知道如何强制它执行评估?谢谢。
bquote
和.( )
正是我所需要的。谢谢。这个函数名有没有什么助记符?反引号? - Sealanderlabels
基本上像一个列表一样询问,因此您可以使用任何用于迭代列表的函数。标签的顺序按照断点的顺序进行,因此您可以在其中一个中查找值并在另一个中进行索引而不会出现问题。 - MrFlick