复合图表是指包含多个图层的图表。同一个图表中的若干图层可能是同一类型的图层(例如,都是散点图),但可能是不同类型的图层(例如,一个折线图,一个散点图)。在ggplot系统中,我们只需把不同图层用加号连接起来就可画出复合图表了。
library(ggplot2)
dat=read.csv("ip small.csv", row.names=1) # 课件中的文件
## 画一条附加散点的折线
ggplot(dat)+
geom_line(aes(ID, Value, group=Area))+
geom_point(aes(ID, Value, color=Area), size=3)
## 数据分成两半,一组画折线,一组画散点
ggplot()+
geom_line(data=dat[dat$Area=="Machinery", ], aes(ID, Value), size=2, color="royalblue1")+
geom_point(data=dat[dat$Area=="Computer", ], aes(ID, Value), size=3, color="orange")
## 画两条渐变折线(图2-4-1a)
co_1=color Ramp Palette(c("green", "cyan"))(24)
co_2=color Ramp Palette(c("purple", "orange"))(24)
ggplot()+
geom_line(data=dat[dat$Area=="Machinery", ], aes(ID, Value), size=2, color=co_1)+
geom_line(data=dat[dat$Area=="Computer", ], aes(ID, Value), size=2, color=co_2)
## 图层的顺序:先写在代码里的图层会被放在底层,并被后面的图层覆盖(www.xing528.com)
# 比如,如果要画较大点加较小点的话,就必须先画较大点;否则它会把较小点遮住(图2-4-1b)
ggplot(dat)+
geom_line(aes(ID, Value, color=Area), size=2)+
geom_point(aes(ID, Value), color="royalblue1", shape=17, size=6)+ # 先画较大点
geom_point(aes(ID, Value), color="orange", size=3) # 再画较小点
接下来我们再尝试把条形图、折线图和散点图三个图层结合起来——当然,这样做仅是出于示范目的,在实际作图工作中,我们一般不会同时用三个图层来表示一个变量。
绘制条形图的函数为geom_bar,后面的章节会详细介绍它的参数设置,在此我们只要了解它的基本用法即可。
图2-4-1 左=图a两条渐变折线,右=图b图层顺序
本例使用的数据为按月统计的美国轻质原油价格,我们用图表呈现每年的均值。
dat=read.csv("wti.csv", row.names=1) # 课件中的文件
dat=tapply(dat$Price, INDEX=list(dat$Year), mean) # 按年份求均值
dat=data.frame(Year=as.numeric(as.character(names(dat))), Mean=as. numeric(dat))
# 在geom_bar中,x为类别(数值、字符或因子)。y为频数,即条形的高度(此时务必如下例所示添加stat="identity")。fill为填充色(更改轮廓的颜色需用color)。width为宽度。关于geom_bar中的orientation参数,参见第三章第一节关于coord_flip的内容
ggplot(dat)+
geom_bar(aes(x=Year, y=Mean), stat="identity", fill="khaki3", width=0.8)+
geom_line(aes(Year, Mean), size=1.5)+
geom_point(aes(Year, Mean), size=4)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。