首页 理论教育 基于ggplot的政经数据可视化:设置图例及相关参数

基于ggplot的政经数据可视化:设置图例及相关参数

时间:2023-11-19 理论教育 版权反馈
【摘要】:本节讲述在scale_*_*系列函数中设置图例的方法,与图例相关的其他设置将在介绍theme函数时提及。现将这两个函数的参数总结如下:●direction:可选项为"horizontal"和"vertical",设定是以水平方向还是以垂直方向放置图例。如果不需要图例标题,可设成NULL或""。默认状态下,垂直图例会被设置为"top",水平图例会被设置为"left"。另外,调整粗细的参数为frame.linewidth,而不是frame.size。

基于ggplot的政经数据可视化:设置图例及相关参数

本节讲述在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

)

)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈