问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

R语言入门 | 使用 ggplot2 进行数据可视化

创作时间:
作者:
@小白创作中心

R语言入门 | 使用 ggplot2 进行数据可视化

引用
CSDN
1.
https://blog.csdn.net/mooridy/article/details/137018894

本文将介绍如何使用R语言的ggplot2包进行数据可视化。通过本文,读者将学习到如何创建基本的ggplot图形、使用不同的几何对象、进行图形属性映射、分面、位置调整等高级技巧。

准备工作

在开始之前,需要先安装并加载tidyverse包,其中包含了ggplot2以及其他一些常用的数据处理和可视化工具。

install.packages("tidyverse")
library(tidyverse)

R包只需安装一次,但每次开始新会话时都要重新加载。

数据框

数据框是变量(列)和观测(行)的矩形集合。下文经常使用mpg数据集,它包含了由美国环境保护协会收集的38种车型的观测数据。当你想了解mpg数据框的信息时,可使用?mpg来查阅。

创建ggplot图形

使用ggplot函数创建一个基本的散点图:

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))

  • ggplot(data = mpg):创建一张空白图
  • geom_point():向图中添加一个点层,可以创建一张散点图。
  • mapping参数:定义了如何将数据集中的变量映射为图形属性。
  • aes()函数:aes()函数的x参数和y参数分别指定了映射到x轴的变量与映射到y轴的变量。

绘图模板

ggplot(data = <DATA>) + 
<GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))
  • <GEOM_FUNCTION>:例如geom_point用于创建散点图
  • <MAPPINGS>:例如x=<变量名>,y=<变量名>,color=<变量名>,shape,size,alpha(透明度)

示例:

ggplot(data = diamonds) + 
geom_point(mapping = aes(x=carat,y=price))

图形属性映射

可以将点的颜色映射为变量class

ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy, color = class))

区分:

  • 以手动为几何对象设置图形属性(常量):
ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy), color = "blue", shape=21, fill="red")

分面

facet_wrap()

class变量分组,排成2行:

ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy)) + 
facet_wrap(~ class, nrow = 2)

facet_grid()

可以按多个分类变量进行分面:

ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy)) + 
facet_grid(drv ~ cyl)

几何对象

几何对象是图中用来表示数据的几何图形对象。我们经常根据图中使用的几何对象类型来描述相应的图。例如,条形图使用了条形几何对象,折线图使用了直线几何对象,箱线图使用了矩形和直线几何对象。

  • geom_point:散点图
  • geom_smooth:平滑曲线图
  • geom_bar:条形图

可以叠加使用:

ggplot(data = mpg) + 
geom_smooth(mapping = aes(x = displ, y = hwy)) + 
geom_point(mapping = aes(x = displ, y = hwy))

geom_smooth平滑曲线图中,可以按照不同的线型绘制出不同的曲线,每条曲线对应映射到线型的变量的一个唯一值:

ggplot(data = mpg) + 
geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))

参数说明:

  • linetype:线型
  • group
  • color

控制选项:

  • show.legend=FALSE:不显示图例,位置:和mapping并列
  • se=FALSE:不显示置信区间,位置:和mapping并列

位置调整

dodge

分开排列:

ggplot(data = diamonds) + 
geom_bar( 
mapping = aes(x = cut, fill = clarity), 
position = "dodge" 
)

identity

叠着排列,显示实际高度:

ggplot(data = diamonds) + 
geom_bar( 
mapping = aes(x = cut, fill = clarity), 
position = "identity" 
)

默认堆叠

默认情况下,条形图会堆叠显示:

jitter

适用于散点图,为每个数据点添加一个很小的随机扰动,这样就可以将重叠的点分散开:

ggplot(data = mpg) + 
geom_point( 
mapping = aes(x = displ, y = hwy), 
position = "jitter" 
)

对比没有使用jitter的:

画盒图

ggplot(data = mpg,mapping = aes(x = class, y = hwy)) + 
geom_boxplot( aes(fill=class))

坐标系

旋转坐标系

使用coord_flip()函数可以旋转坐标系:

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
geom_boxplot() + 
coord_flip()

绘制空间数据

使用geom_polygon()绘制空间数据:

nz <- map_data("nz") //取出新西兰地图
ggplot(nz, aes(long, lat, group = group)) + 
geom_polygon(fill = "white", color = "black") + 
coord_quickmap

极坐标

使用coord_polar()绘制极坐标图:

p<-ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = cut))+coord_polar()

频率分布图

使用geom_freqpoly()绘制频率分布图:

ggplot(data = diamonds, mapping = aes(x = price)) +
geom_freqpoly(binwidth = 10)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号