我希望geom_text()
标签根据变量显示字体系列。
根据{{3}}上的示例(向下滚动到底部),我已经这样做了(与ggplot docs示例中的相同):
library(ggplot2)
p <- ggplot(mtcars, aes(x=wt, y=mpg, label=rownames(mtcars)))
p + geom_text(aes(family=c("serif", "mono")[am+1]))
产量:
这一切都很好,但是如何在传奇中获得字体系列?
答案 0 :(得分:2)
它不漂亮:您可以在grob
级别更改图例标签的字体系列(我不知道另一种方式,但我希望有)。
首先将colour
添加到美学中,以便自动生成图例,然后使用scale_colour_manual
手动设置颜色,使其保持原样。然后调整图例细节,以更改键中的标签和字体。
library(ggplot2)
library(grid)
p <- ggplot(mtcars, aes(x=wt, y=mpg, colour=factor(am), label=rownames(mtcars))) +
geom_text(aes(family=c("serif", "mono")[am+1])) +
scale_colour_manual(values=c('0'= "#000000FF", '1'="#000000FF"),
name="am") +
theme(legend.text=element_text(size=16),
legend.key.width=unit(2, "cm"))
g <- ggplotGrob(p)
# change labels and fonts
g$grobs[[8]]$grobs[[1]]$grobs[[4]]$label <- "mono"
g$grobs[[8]]$grobs[[1]]$grobs[[4]]$gp$fontfamily <- "mono"
g$grobs[[8]]$grobs[[1]]$grobs[[6]]$label <- "serif"
g$grobs[[8]]$grobs[[1]]$grobs[[6]]$gp$fontfamily <- "serif"
grid.newpage()
grid.draw(g)