参考自《R Graphics Cookbook》
修改图例的(项目)标签的方法
首先,如下图所示,图例通常首先有个标题,然后有图形中的各个项目对应的示意图和各个项目的标签
![ecdc06db0c0637d93c6dce61eead4200.png](https://i-blog.csdnimg.cn/blog_migrate/3a3ecd51e89fdb85f76842542c176a35.png)
本节三个部分:
一、针对一个图例的情况;
二、针对一个变量映射两个图形属性生成复合图例的情况(比如颜色和点型)
三、总结
library(ggplot2)
一、针对一个图例的情况
#底图:默认图例的项目便签对应映射分组变量的数据,即此处映射给fill的group变量的数据
pg_plot <- ggplot(PlantGrowth, aes(x = group, y = weight, fill = group)) +
geom_boxplot()
![26fec55ce4a19983408630caad4efbee.png](https://i-blog.csdnimg.cn/blog_migrate/9d4f8582b746cd16f4f9f652e6f9954f.png)
#在标度设置labels参数,修改语图例的项目标签内容,此时x轴上的项目标签并不会变
pg_plot +
scale_fill_discrete(labels = c("Control", "Treatment 1", "Treatment 2"))
![26bdfec83734b8fb4c950cb49d7926f8.png](https://i-blog.csdnimg.cn/blog_migrate/8a69e693078d5259ebd47fd3229700a8.png)
#如果想要同时修改x轴上图的项目标签,则需要在标度中针对x轴的labels进行设置
pg_plot +
scale_fill_discrete(labels = c("Control", "Treatment1", "Treatment2")) +
scale_x_discrete(labels = c("Control", "Treatment1", "Treatment2"))
![16d5d8606c7c956aec945e4ccc447db7.png](https://i-blog.csdnimg.cn/blog_migrate/3cde70c55feaaa660ed20e07e655dd9d.png)
#事实上,当映射fill属性给分组变量时,其默认的逻辑就是使用scale_fill_discrete(),给每个被区分的项目分别上色,这时候叫其discrete
#还有其他的上色,如上一个灰色的系列
pg_plot +
scale_fill_grey(start = .5, end = 1, labels = c("Control", "Treatment 1", "Treatment 2"))
![734b42debb59cab4936b27c3fb7f8027.png](https://i-blog.csdnimg.cn/blog_migrate/0db2487aefb7f8e9ec95fd0742d71d59.png)
#如果首先指定了图例的顺序,又指定图例项目的标签,那么首先图例的顺序确定,同时,x轴上的图会按照图例的项目上色(此例中是红绿蓝的顺序),然后图例的标签依设定的次序排列。#好吧,其实这个设计很晕了已经
pg_plot +
scale_fill_discrete(
limits = c("trt1", "trt2", "ctrl"),
labels = c("Treatment 1", "Treatment 2", "Control"))
![d2580c90f95d6d68fcaf47403d886e66.png](https://i-blog.csdnimg.cn/blog_migrate/375df9cc7cf40140378185960473d777.png)
二、针对一个变量映射两个图形属性的情况(颜色和点型)
library(gcookbook)
#此时默认是结合了颜色和点型的一个复合图例
hw_plot <- ggplot(heightweight, aes(x = ageYear, y = heightIn,
shape = sex, colour = sex)) +
geom_point()
hw_plot
![cee7fe2c59a24f27cb02d7fbdc2e8f89.png](https://i-blog.csdnimg.cn/blog_migrate/30595b96269d470e7175279cc7c8a023.png)
#如果只修改一个图形属性的图例标签,则会由于和另一个默认的冲突,图例由一个变两个
hw_plot +
scale_shape_discrete(labels = c("Female", "Male"))
![6fb56843bec09d84115c0fb9d7dc95a3.png](https://i-blog.csdnimg.cn/blog_migrate/313944498ca9f8c3747e5d30ae1d431e.jpeg)
#只有同时将两个图形属性的图例标签修改为相同的才会再回到默认的一个复合图例,否则还是分成两个
hw_plot +
scale_shape_discrete(labels = c("Female", "Male")) +
scale_colour_discrete(labels = c("Female", "Male"))
![fe138f8023447d0bee5c536d67881383.png](https://i-blog.csdnimg.cn/blog_migrate/a6e04913270768f8b1c8c6f753b4fe00.png)
#其他针对图例的标度
![a099b3e3717dc8732e39d31b10aedc4d.png](https://i-blog.csdnimg.cn/blog_migrate/3e9543c32797977b6eb024abffa53eb7.jpeg)
三、总结
复杂程度感人,要是每次都这么操作,到底还做不做图了?
这是做图呢,还是做逻辑推理呢?快要劝退自己了。