如何在GGPLOT的图例中添加并正常显示希腊字母
问题根因
你的两次尝试都没有命中控制目标图例的正确配置项:
- 第一次代码中,你在
aes内使用fill = var1做填充映射,对应控制填充图例的是scale_fill_*系列函数,但你调用了控制线条/点颜色的scale_colour_manual,两者不匹配自然不生效。 - 第二次代码中,你调用的
scale_x_discrete是修改X轴刻度标签的配置,和图例完全无关,无法修改图例内容。
正确实现代码
如果你需要将图例标签改为希腊字母,直接调用和fill映射匹配的scale_fill_discrete(如果不需要修改默认填充色)或者scale_fill_manual(需要自定义填充色),在labels参数中传入expression定义的希腊字母即可。
场景1:图例显示τ₁、τ₂
library(ggplot2) library(dplyr) set.seed(1) Dat = rbind(data.frame(var1 = 'x1', var2 = rnorm(10000, 10, 3)), data.frame(var1 = 'x2', var2 = rnorm(10000, 10, 3))) Dat %>% ggplot() + geom_histogram(aes(x = var2, y = ..density.., fill = var1), bins = 30) + scale_fill_discrete(labels = c("x1" = expression(tau[1]), "x2" = expression(tau[2])))
场景2:图例显示α、β
Dat %>% ggplot() + geom_histogram(aes(x = var2, y = ..density.., fill = var1), bins = 30) + scale_fill_discrete(labels = c("x1" = expression(alpha), "x2" = expression(beta)))
补充说明
如果需要同时自定义填充色,替换为scale_fill_manual即可,示例如下:
Dat %>% ggplot() + geom_histogram(aes(x = var2, y = ..density.., fill = var1), bins = 30) + scale_fill_manual( values = c("x1" = "lightblue", "x2" = "orange"), # 自定义填充色 labels = c("x1" = expression(alpha), "x2" = expression(beta)), # 自定义标签 name = "自定义图例标题" # 自定义图例标题 )
内容的提问来源于stack exchange,提问作者Brian Smith
相关产品推荐
相关产品推荐

