主页 > 电脑硬件  > 

【R语言】绘图

【R语言】绘图
一、散点图

散点图也叫X-Y图,它将所有的数据以点的形式展现在坐标系上,用来显示变量之间的相互影响程度。

ggplot2包中用来绘制散点图的函数是geom_point(),但在绘制前需要先用ggplot()函数指定数据集和变量。

下面用mtcars数据集做演示,绘制mpg与wt之间的关系。

1、生成散点图 head(mtcars) library(ggplot2) ggplot(mtcars, aes(x = wt, y = mpg)) + # 映射x和y变量 geom_point() + # 添加散点图层 labs(title = "汽车重量与油耗之间的关系", # 标题和轴标签 x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal() # 设置主题

2、设置形状和颜色 

可以通过geom_point()函数的shape参数和col参数改变点的形状和颜色。

ggplot() + geom_point(data=mtcars, aes(x = wt, y = mpg), shape=2, col="red") + labs(title = "汽车重量与油耗之间的关系", # 标题和轴标签 x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal() # 设置主题

 当shape为2时,点的颜色只能由col参数控制。但对于一些类型的点,比如shape=24,还可以使用fill参数填充颜色。 

ggplot() + geom_point(data=mtcars, aes(x = wt, y = mpg), shape=24, col="red", fill="green") + labs(title = "汽车重量与油耗之间的关系", # 标题和轴标签 x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal() # 设置主题

 

 3、拟合回归线

可以使用stat_smooth()函数拟合回归线,通过其参数method拟合直线(lm),或拟合平滑曲线(loess)。

# 拟合一条直线 ggplot(mtcars, aes(x = wt, y = mpg)) + # 映射x和y变量 geom_point() + stat_smooth(method="lm", level=0.95) + labs(title = "汽车重量与油耗之间的关系", # 标题和轴标签 x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal()

# 拟合一条平滑曲线 ggplot(mtcars, aes(x = wt, y = mpg)) + # 映射x和y变量 geom_point() + stat_smooth(method="loess", level=0.95) + labs(title = "汽车重量与油耗之间的关系", # 标题和轴标签 x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal()

4、设置分组

 很多时候需要先对数据进行分组,然后再绘制散点图。设置分组的依据有很多,比如散点形状、颜色、填充色等。

以形状进行分组:

# 因为am变量是离散数据,所以需要先将其转换为因子 mtcars1 <- mtcars mtcars1$am <- factor(mtcars$am) # 将am变量映射给形状 ggplot(mtcars1, aes(x=wt, y=mpg,shape=am)) + geom_point() + labs(title = "汽车重量与油耗之间的关系", x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal()

以形状为分组,并添加线性回归直线:

# 因为am变量是离散数据,所以需要先将其转换为因子 mtcars1 <- mtcars mtcars1$am <- factor(mtcars$am) # 将am变量映射给形状 ggplot(mtcars1, aes(x=wt, y=mpg, shape=am)) + geom_point() + stat_smooth(method="lm", level=0.95) + labs(title = "汽车重量与油耗之间的关系", x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal()

用颜色进行分组:

# 因为am变量是离散数据,所以需要先将其转换为因子 mtcars1 <- mtcars mtcars1$am <- factor(mtcars$am) # 将am变量映射给形状 ggplot(mtcars1, aes(x=wt, y=mpg, col=am)) + geom_point() + labs(title = "汽车重量与油耗之间的关系", x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal()

 以颜色为分组,并添加线性回归直线:

# 因为am变量是离散数据,所以需要先将其转换为因子 mtcars1 <- mtcars mtcars1$am <- factor(mtcars$am) # 将am变量映射给形状 ggplot(mtcars1, aes(x=wt, y=mpg, col=am)) + geom_point() + stat_smooth(method="lm", level=0.95) + labs(title = "汽车重量与油耗之间的关系", x = "重量(吨)", y = "每加仑英里数(MPG)") + theme_minimal()

5、生成单变量散点图

可以使用R语言内置的stripchart()函数生成单变量散点图。

# 设置随机种子 set.seed(100) # 生成10个随机数并重复10次 x <- rep(round(rnorm(10,0,1), digits=2), 10) # 生成单变量散点图 stripchart(x)

# 可以添加上下扰动 stripchart(x, method="jitter")

二、折线图

折线图的实现方法是使用geom_line()函数。

1、简单折线图 head(mtcars) library(dplyr) data1 <- mtcars %>% group_by(carb) %>% summarize_at(.vars="mpg", .funs=mean) # 绘制简单折线图 ggplot(data1, aes(x=carb, y=mpg)) + geom_line()

 

2、离散数据

对折线图来说,x轴对应的变量可以是离散型数据(包括因子),也可以是连续型数据。但如果是前者的话,必须使用aes(group=1)命令,否则程序将无法确定这些点是否属于同一个组。

当x轴变量为离散数据但未指定aes(group=1)时,将无法画出正确的图:

data2 <- mtcars %>% group_by(carb) %>% summarize_at(.vars="mpg", .funs=mean) %>% mutate(carb=as.character(carb)) # 当x轴变量为离散数据但未指定aes(group=1)时,将无法画出正确的图 ggplot(data2, aes(x=carb, y=mpg)) + geom_line()

指定aes(group=1),绘制x变量为离散型数据时的折线图 

# 绘制x变量为离散型数据时的折线图 ggplot(data2, aes(x=carb, y=mpg, group=1)) + geom_line() + geom_point(shape=22,size=2)

 3、多重折线图

如果分组变量有两个,这时绘制的折线图叫多重折线图。有多种方法可以进行处理,比如将另一个变量映射给线形或者线条颜色。

data3 <- mtcars %>% group_by(am, cyl) %>% summarize_at(.vars="mpg",.funs=mean) %>% ungroup() %>% mutate(am=as.character(am)) # 保留变量cy1,将am变量映射给线形 ggplot(data3, aes(x=cyl, y=mpg, linetype=am)) + geom_line()

# 将am映射给线条颜色 ggplot(data3, aes(x=cyl, y=mpg, color=am)) + geom_line()

标签:

【R语言】绘图由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【R语言】绘图