r - 具有可变字体系列的 geom_text 图例

标签 r ggplot2

我想要 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]))

产量:

enter image description here

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

最佳答案

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

enter image description here

关于r - 具有可变字体系列的 geom_text 图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28487364/

相关文章:

r - 如何绘制堆叠条形图,其中每个条形图的顺序基于列,每个级别的颜色基于另一个级别?

r - 使用 ggplot 绘制函数,相当于 curve()

r - 在 Linux 上为 R 安装 PostgreSQL 包时没有这样的文件错误 libpq-fe.h

r - R-tryCatch警告消息正在写入数据

R rlm 模型错误 : 'x' is singular: singular fits are not implemented in 'rlm'

R:将隐式缺失值和组填充到数据的整个时间跨度

r - ggplot2 geom_smooth 以变量为因子

r - geom_point 有很多数据点,绘图文件太大。

r - 有没有办法在使用因子变量的填充选项的 ggplot 条形图上创建误差线?

R - 如何将一个函数作为参数传递给另一个函数?