R中ggplot的geom_point图例:如何用labeller式方法转换因子值?
解决方案:不修改原始CSV,实现图例显示文本标签
针对你的问题,这里提供两种无需改动原始CSV文件的解决方式:
方法1:修改内存中因子列的水平标签(推荐)
直接给TP_DEPENDENCIA这个因子列的水平(levels)设置文本标签,仅修改R内存中的数据,完全不影响本地CSV文件。修改后,图例和分面都会自动使用文本标签,无需再单独设置labeller参数:
# 导入数据后执行此代码,更新因子标签 meu_primeiro_csv$TP_DEPENDENCIA <- factor( meu_primeiro_csv$TP_DEPENDENCIA, levels = c(1, 2, 3, 4), labels = c("Federal", "Estadual", "Municipal", "Privada") ) # 正常绘图即可 ggplot(meu_primeiro_csv, aes(x = 你的X列, y = 你的Y列, color = TP_DEPENDENCIA, shape = TP_DEPENDENCIA)) + geom_point() + facet_wrap(~TP_DEPENDENCIA)
方法2:在ggplot刻度层单独指定图例标签
如果不想改动内存中的因子列,可在绘图时给颜色、形状的刻度层直接设置标签,仅作用于当前图表:
ggplot(meu_primeiro_csv, aes(x = 你的X列, y = 你的Y列, color = TP_DEPENDENCIA, shape = TP_DEPENDENCIA)) + geom_point() + # 分面标签保持你原来的设置 facet_wrap(~TP_DEPENDENCIA, labeller = labeller(TP_DEPENDENCIA = c("1" = "Federal", "2" = "Estadual", "3" = "Municipal", "4" = "Privada"))) + # 给颜色图例设置文本标签 scale_color_discrete(labels = c("1" = "Federal", "2" = "Estadual", "3" = "Municipal", "4" = "Privada")) + # 给形状图例设置相同的文本标签(保证图例一致性) scale_shape_discrete(labels = c("1" = "Federal", "2" = "Estadual", "3" = "Municipal", "4" = "Privada"))
问题解答
- 使用上述任意一种方法,都能让图例显示对应的文本标签;
- 完全可以仅做展示层修改,两种方法都不会改动原始CSV文件的存储值,仅在R的内存数据或绘图逻辑中处理。
内容的提问来源于stack exchange,提问作者BsAxUbx5KoQDEpCAqSffwGy554PSah
相关产品推荐
相关产品推荐

