【问题标题】:Legend for geom_text with variable font family具有可变字体系列的 geom_text 图例
【发布时间】:2015-02-12 20:41:36
【问题描述】:

我想让geom_text() 标签根据变量采用字体系列。 根据ggplot2 docs 上的示例(向下滚动到底部),我已经这样做了(与 ggplot 文档示例相同):

library(ggplot2)
p <- ggplot(mtcars, aes(x=wt, y=mpg, label=rownames(mtcars)))
p + geom_text(aes(family=c("serif", "mono")[am+1]))

产量:

这一切都很好——但我如何获得图例中的字体系列?

【问题讨论】:

  • 呃这很奇怪,几天前有人已经回答了这个问题,我正准备接受并实施它,但现在答案消失了......那是怎么回事?

标签: r ggplot2


【解决方案1】:

它不漂亮:您可以在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)

【讨论】:

    猜你喜欢
    • 2015-02-06
    • 2022-01-25
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2016-12-22
    • 2017-02-11
    相关资源
    最近更新 更多