ggplot2中图例基础:
ggplot2会自动生成图例,我们可以对图例进行删改。
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8)
p

1. 隐藏图例
方法一:用 guides(fill=FALSE) 隐藏由fill产生的图例,同理可以隐藏由color、shape产生的图例。
方法二:增加图层的时候把参数 show_guide 设为 FALSE,隐藏某图层的图例。
方法三:作用和方法一类似,设置 scale_fill_discrete(guide = FALSE),可以把中间的 fill 改成 color 或者 shape,从而隐藏相应的图例。
方法三:用 theme(legend.position = “none”) 来隐藏全局图例。
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8, show_guide = FALSE) ##隐藏此图层产生的图例
# + guides(fill=FALSE) ##隐藏由fill产生的图例
# + scale_fill_discrete(guide = FALSE) ##隐藏由fill产生的图例
# + theme(legend.position = "none") ##隐藏所有图例
p
2. 隐藏图例标题
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8)
p + guides(color=guide_legend(title=NULL)) ##对color产生的图例去掉标题
# p + theme(legend.title=element_blank()) ##把所有图例的标题去掉
3.更改图例顺序
用 scale_color_discrete,通过 breaks 参数设置图例的顺序(注意也可以把color改成fill或者shape):
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8) +
scale_color_discrete(breaks = c('B','C','A','D'))
p
直接将图例逆序:
p + guides(color = guide_legend(reverse=TRUE))
或者:p + scale_color_discrete(guide = guide_legend(reverse=TRUE))
或者:p + scale_color_discrete(breaks = rev(levels(dt$C)))
4. 更改图例的标签文字
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8) +
scale_colour_discrete(breaks = c('A','B','C','D'), labels = c('W','X','Y','Z'))
p
5. 设置图例标题和标签文字的大小、颜色
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8) +
theme(legend.title = element_text(color="134", size=16, face="bold")) + ##设置标题,face="bold"加粗
theme(legend.text = element_text(color="azure4", size = 14, face = "bold")) ##设置标签文字
p
6. 更改图例的位置
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8) +
theme(legend.position = 'top') ##同理可以取 bottom、right、left
p
不显示图例,theme(legend.position = “none”)
第一种方法属于theme主题系统,元素名legend.position,引号内可选参数有right、left、bottom,对应右、下、左
第二种方法,元素legend.position和legend.justification同时出现并且值相同,想象图例在坐标轴里,则c(0, 1)为面板左上角,c(1, 0)为面板右下角,c(0.5, 0,5)为面板中间;面板指绘图区域。
参考:https://blog.csdn.net/Bone_ACE/article/details/47284805
网友评论