首页 理论教育 基于ggplot的复合图表,包含柱状图、折线图和散点图

基于ggplot的复合图表,包含柱状图、折线图和散点图

时间:2023-11-19 理论教育 版权反馈
【摘要】:复合图表是指包含多个图层的图表。同一个图表中的若干图层可能是同一类型的图层,但可能是不同类型的图层。在ggplot系统中,我们只需把不同图层用加号连接起来就可画出复合图表了。图2-4-1左=图a两条渐变折线,右=图b图层顺序本例使用的数据为按月统计的美国轻质原油价格,我们用图表呈现每年的均值。关于geom_bar中的orientation参数,参见第三章第一节关于coord_flip的内容ggplot+geom_bar+geom_line+geom_point

基于ggplot的复合图表,包含柱状图、折线图和散点图

复合图表是指包含多个图层的图表。同一个图表中的若干图层可能是同一类型的图层(例如,都是散点图),但可能是不同类型的图层(例如,一个折线图,一个散点图)。在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)

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

我要反馈