ggplot 中有没有办法在具有不同字体类型的相同 x 轴标签中有 2 个不同的变量?
Is there a way in ggplot to have 2 different variables in same x axis labels with different font type?
我正在尝试在 ggplot 的 x 轴标签中使用不同的字体。从下面的link:X-axis tick labels different font size and font face ggplot可以看出,很可能是bquote和atop。但是,我不完全确定该怎么做。
以下是堆栈溢出的一些代码:
group_name = sprintf("A[%i*x]", rep(1:4,each=2))
group_name3 = sprintf("A[%j*x]", rep(1:4,each=2))
make_labels2 <- function(value) {
x <- as.character(value)
do.call(expression, lapply(x, function(y) bquote(atop(bold(.(y)), "this"~italic("degree")~x))))
}
mydata2 <- data.frame(mygroup = group_name,
mygroup3 = group_name3,
mysubgroup = factor(c("Yes", "No"),
levels = c("Yes", "No")),
value = c(60,40,90,10,55,45,88,12))
ggplot(mydata2, aes(mygroup, value, fill = mysubgroup)) +
geom_bar(position = "dodge", width = 0.5, stat = "identity")+
coord_flip() +
scale_x_discrete(labels = make_labels2)
我希望能够使用 group_name3 并将其连接到 group_name。努力寻找最好的方法。 group_name3 不加粗。
非常感谢任何帮助。
提前致谢。
也许您正在寻找这个
group_name = sprintf("A[%i*x]", rep(1:4,each=2))
group_name3 = sprintf("A[%i*y]", rep(1:4,each=2))
make_labels2 <- function(value) {
x <- as.character(value)
#do.call(expression, lapply(x, function(y) bquote(atop(bold(.(y)), "this"~italic("degree")~x)) ))
do.call(expression, lapply(x, function(y) bquote(atop(bold(.(strsplit(y,split="_")[[1]][[1]]))~"_"~italic(.(strsplit(y,split="_")[[1]][[2]])), "this"~italic("degree")~x)) ))
}
mydata2 <- data.frame(mygroup = group_name,
mygroup3 = group_name3,
mysubgroup = factor(c("Yes", "No"),
levels = c("Yes", "No")),
value = c(60,40,90,10,55,45,88,12))
mydata2$mygrp2 <- paste0(mydata2$mygroup,"_",mydata2$mygroup3)
ggplot(mydata2, aes(mygrp2, value, fill = mysubgroup)) +
geom_bar(position = "dodge", width = 0.5, stat = "identity")+
coord_flip() +
scale_x_discrete(labels = make_labels2)
我正在尝试在 ggplot 的 x 轴标签中使用不同的字体。从下面的link:X-axis tick labels different font size and font face ggplot可以看出,很可能是bquote和atop。但是,我不完全确定该怎么做。
以下是堆栈溢出的一些代码:
group_name = sprintf("A[%i*x]", rep(1:4,each=2))
group_name3 = sprintf("A[%j*x]", rep(1:4,each=2))
make_labels2 <- function(value) {
x <- as.character(value)
do.call(expression, lapply(x, function(y) bquote(atop(bold(.(y)), "this"~italic("degree")~x))))
}
mydata2 <- data.frame(mygroup = group_name,
mygroup3 = group_name3,
mysubgroup = factor(c("Yes", "No"),
levels = c("Yes", "No")),
value = c(60,40,90,10,55,45,88,12))
ggplot(mydata2, aes(mygroup, value, fill = mysubgroup)) +
geom_bar(position = "dodge", width = 0.5, stat = "identity")+
coord_flip() +
scale_x_discrete(labels = make_labels2)
我希望能够使用 group_name3 并将其连接到 group_name。努力寻找最好的方法。 group_name3 不加粗。
非常感谢任何帮助。
提前致谢。
也许您正在寻找这个
group_name = sprintf("A[%i*x]", rep(1:4,each=2))
group_name3 = sprintf("A[%i*y]", rep(1:4,each=2))
make_labels2 <- function(value) {
x <- as.character(value)
#do.call(expression, lapply(x, function(y) bquote(atop(bold(.(y)), "this"~italic("degree")~x)) ))
do.call(expression, lapply(x, function(y) bquote(atop(bold(.(strsplit(y,split="_")[[1]][[1]]))~"_"~italic(.(strsplit(y,split="_")[[1]][[2]])), "this"~italic("degree")~x)) ))
}
mydata2 <- data.frame(mygroup = group_name,
mygroup3 = group_name3,
mysubgroup = factor(c("Yes", "No"),
levels = c("Yes", "No")),
value = c(60,40,90,10,55,45,88,12))
mydata2$mygrp2 <- paste0(mydata2$mygroup,"_",mydata2$mygroup3)
ggplot(mydata2, aes(mygrp2, value, fill = mysubgroup)) +
geom_bar(position = "dodge", width = 0.5, stat = "identity")+
coord_flip() +
scale_x_discrete(labels = make_labels2)