本节讲述在scale_*_*系列函数中设置图例的方法,与图例相关的其他设置将在介绍theme函数时提及。
library(ggplot2)
dat=read.csv("ip small.csv", row.names=1) # 前边的章节曾经使用过的工业生产指数数据
p=ggplot(data=dat, aes(x=ID, y=Value, group=Area))
## 不对图例进行设置时,有几个属性待分配,就会生成几个图例
p+geom_point(aes(color=Area, alpha=Value), size=5)+
scale_color_manual(values=c("Computer"="red", "Machinery"="blue"))
## 用show.legend去掉本图层的所有图例
p+geom_point(show.legend=FALSE, aes(color=Area, alpha=Value), size=5)+
scale_color_manual(values=c("Computer"="red", "Machinery"="blue"))
## 去掉单独一个图例,用scale_*_*(guide="none")
p+geom_point(aes(color=Area, alpha=Value), size=5)+
scale_color_manual(guide="none", values=c("Computer"="red","Machinery"="blue"))
## 有时两个图例会合并为一个图例
p+geom_point(aes(color=Area, shape=Area), size=5)+
scale_color_manual(values=c("Computer"="red", "Machinery"="blue"))+
scale_shape_manual(values=c("Computer"=19, "Machinery"=0))
## 在两个图例会合并为一个图例时,也可用scale_*_*将其中一个设为不绘制
p+geom_point(aes(color=Area, shape=Area), size=5)+
scale_color_manual(guide="none", values=c("Computer"="red", "Machinery"="blue"))+
scale_shape_manual(values=c("Computer"=19, "Machinery"=0))
##在图例能够合并的情况下,若修改其中一个图例的标题,则图例不会再合并
p+geom_point(aes(color=Area, shape=Area), size=5)+
scale_color_discrete(guide=guide_legend(title="ABC"))+
scale_shape_discrete()
##仅当同时修改两个图例的标题时,合并才会维持
p+geom_point(aes(color=Area, shape=Area), size=5)+
scale_color_discrete(guide=guide_legend(title="ABC"))+
scale_shape_discrete(guide=guide_legend(title="ABC"))
如果需要对图例进行修改,需将一个由guide_legend或guide_colorbar(仅用于调整color和fill属性)生成的对象赋予guide参数。现将这两个函数的参数总结如下:
●direction:可选项为"horizontal"和"vertical",设定是以水平方向还是以垂直方向放置图例。默认状态下,ggplot将自行决定。
●title:图例标题。如果不需要图例标题,可设成NULL或""。
●title.position:图例标题的位置。可选项为"top"、"bottom"、"left"或"right"。默认状态下,垂直图例会被设置为"top",水平图例会被设置为"left"。
●title.theme:图例标题的属性。请参阅后文对theme(...)的讲解。
●title.hjust、title.vjust:调整标题与标尺之间的左右距离和上下距离。见以下示例。
●label:是否显示图例标签。可选项为TRUE(默认)和FALSE。
●label.position:图例标签的位置。可选项为"top"、"bottom"、"left"、"right"。默认状态下,垂直图例会被设置为"right",水平图例会被设置为"bottom"。
●label.theme:图例标签的属性。请参阅后边对theme(...)的讲解。
●label.hjust、label.vjust:图例标签的水平位置和垂直位置。其用法与title. hjust相仿。
●keywidth、keyheight:guide_legend专有,调整格子的宽度和高度。
●barwidth、barheight:guide_colorbar专有,调整标尺的宽度和高度。
●nrow、ncol、byrow:格子的排列方式。见以下例子。
●ticks:guide_colorbar专有,可选项为TRUE和FALSE,用于确定是否在标尺上加刻度线。
●frame.colour、frame.linetype、frame.linewidth:guide_colorbar专有,调整围住标尺的框线。注意:在ggplot2的3.2.1及以前版本中,这里的frame. colour不能写成frame.color。另外,调整粗细的参数为frame.linewidth,而不是frame.size。
●ticks.colour、ticks.linetype、ticks.linewidth:guide_colorbar专有,调整刻度线。注意:调整颜色用ticks.colour,而非ticks.color,调整参数用ticks. linewidth,而非ticks.size。
●reverse:标尺或格子的排列顺序。默认值为FALSE,若改为TRUE,则反向排列标尺或格子。
●override.aes:对格子的图形属性进行修改。要修改的属性必须以list的形式传给该参数。见以下示例。
我们用一些例子来对上述参数进行说明。
## guide_legend(www.xing528.com)
q1=p+geom_point(aes(color=Area, alpha=Value), size=5)
q2=scale_color_manual(
values=c("Machinery"="blue", "Computer"="red"),
guide=guide_legend(
title="color legend",
title.position="left",
title.vjust=1, # 默认值为0.5
title.theme=element_text(color="orange", size=10),
label.theme=element_text(size=15, face=4)
)
)
q3=scale_alpha_continuous(
guide=guide_legend(
direction="horizontal",
title="alpha legend",
title.position="bottom",
title.hjust=-1, # 默认值为0,调至负数使其向左偏
label.position="bottom",
keyheight=3,
keywidth=3,
nrow=2, byrow=TRUE
)
)
q1+q2+q3
## 对格子所使用的图形属性进行修改
p+geom_point(aes(color=Area), shape=15, size=5)+
scale_color_manual(values=c("Computer"="red", "Machinery"="blue"), guide=guide_legend(override.aes=list(shape=8, size=5))) #在本例中,在默认状态下图例会使用15号点,但我们可将其改为8号点
## guide_colorbar
p+geom_point(aes(color=Value), size=5)+
scale_color_continuous(
low="blue", high="red",
breaks=c(95, 100), labels=c(95, 100),
guide=guide_colorbar(
reverse=TRUE,
title="color",
ticks=FALSE
)
)
p+geom_point(aes(color=Value), size=5)+
scale_color_continuous(
low="blue", high="red",
guide=guide_colorbar(
frame.colour="green", frame.linewidth=3,
ticks.colour="yellow", ticks.linewidth=8,
barheight=15
)
)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。