我正在尝试为 y 标签创建一个具有两种字体的条形图(不要混淆:由于 coord_flip()
它被称为 x)。
但是,我在互联网上没有找到任何解决方案。
这可能吗?
到目前为止我已经得到了这个。
library(ggplot2)
labs <- paste(rep("1st", 40), rep("2nd", 40), rep("3rd", 40))
labs <- strsplit(labs, " ")
v1 <- ggplot(data.frame(x = 1:40, y = 1:40), aes(x,y)) +
geom_bar(stat = "identity", fill = "grey50") +
coord_flip() +
scale_x_discrete(labels = paste(sapply(labs, "[[", 1),
.(bold(.(sapply(labs, "[[", 2)))),
sapply(labs, "[[", 3)),
breaks = 1:40)
v1
我想成为所有ylabs中黑体字的第二
。
然而,我得到了这个:
刻度标签应如下所示([=====] 表示图中的条形):
第一第二第三[==================================]
第一第二第三[==============================]
第一第二第三[==========================]
...
最佳答案
最小示例
您必须定义一个表达式
。
library(ggplot2)
all.data <- data.frame(group=c('a','b'),count=c(5,8))
ggplot(data=all.data, aes(group, count)) +
geom_bar(stat = "identity") +
scale_x_discrete(label=c( expression(paste("xxx",bold("foo"))), expression(paste("yyy",bold("bar"))) ))
使用变量的示例
stackoverflow 上的一篇文章让我走上了正确的道路: Use expression with a variable r
labs <- paste(rep("1st", 40), rep("2nd", 40), rep("3rd", 40))
labs <- strsplit(labs, " ")
# create a vector of expressions
# everything in .() is evaluated and ~ forms an expression
plot.labs <- bquote( .(labs[[1]][1]) ~ bold(.(labs[[1]][2])) ~ .(labs[[1]][3]))
# produce a list of expressions
plot.labs.apply <- lapply(labs, function(x) {plot.labs <- bquote( .(x[1]) ~ bold(.(x[2])) ~ .(x[3]))})
# was it done correctly?
class(plot.labs.apply[[2]])
# i used a smaller data frame to not overload the plot
ggplot(data.frame(x = c('a','b'), y = c(40,25)), aes(x,y)) +
geom_bar(stat = "identity", fill = "grey50") +
coord_flip() +
scale_x_discrete(label = c(plot.labs.apply) )
关于r - ggplot 标签中的两个字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36889065/