R语言 用R和ggplot2实现数据可视化
R编程语言中的ggplot2包 也被称为 图形语法 ,是一个免费的、开源的、易于使用的可视化包,在R中广泛使用。它是由Hadley Wickham编写的最强大的可视化包。
它包括几个层次,它是由这些层次来管理的。这些层次如下。
具有图形语法的层的构件
- 数据: 该元素是数据集本身
- 美学 :数据要映射到美学属性上,如X轴、Y轴、颜色、填充、大小、标签、阿尔法、形状、线宽、线型。
- 几何学: 我们的数据如何使用点、线、柱状图、条形图、boxplot进行显示。
- 面: 使用列和行来显示数据的子集。
- 统计学: 分选、平滑、描述性、中间性
- 坐标: 使用直角坐标、固定坐标、极坐标、极限坐标显示数据和显示之间的空间
- 主题: 非数据链接
使用的数据集
mtcars(motor trend car road test)包括32种汽车的油耗和汽车设计和性能的10个方面,并预先安装了R中的 dplyr 包。
# Installing the package
install.packages("dplyr")
# Loading package
library(dplyr)
# Summary of dataset in package
summary(mtcars)
输出
mpg cyl disp hp
Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
Median :19.20 Median :6.000 Median :196.3 Median :123.0
Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
drat wt qsec vs
Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
Median :3.695 Median :3.325 Median :17.71 Median :0.0000
Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
am gear carb
Min. :0.0000 Min. :3.000 Min. :1.000
1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
Median :0.0000 Median :4.000 Median :2.000
Mean :0.4062 Mean :3.688 Mean :2.812
3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
Max. :1.0000 Max. :5.000 Max. :8.000
R编程中的ggplot2包的例子
我们使用 ggplot2 图层对包括32个汽车品牌和11个属性的 MTCars 数据集进行了可视化设计。
数据层
在数据层中,我们定义了要可视化的信息来源,让我们使用ggplot2包中的MTCars数据集。
# Loading packages
library(ggplot2)
library(dplyr)
# Data Layer
ggplot(data = mtcars)
输出
美学层
在这里,我们将把数据集显示并映射到某些美学上。
# Aesthetic Layer
ggplot(data = mtcars, aes(x = hp, y = mpg, col = disp))
输出
几何图层
在几何图层中控制基本元素,看看我们的数据是如何使用点、线、柱状图、条形图、boxplot显示的。
# Geometric layer
ggplot(data = mtcars,
aes(x = hp, y = mpg, col = disp)) + geom_point()
输出
几何图层。添加大小、颜色和形状,然后绘制直方图图谱
# Adding size
ggplot(data = mtcars,
aes(x = hp, y = mpg, size = disp)) + geom_point()
# Adding color and shape
ggplot(data = mtcars,
aes(x = hp, y = mpg, col = factor(cyl),
shape = factor(am))) +
geom_point()
# Histogram plot
ggplot(data = mtcars, aes(x = hp)) +
geom_histogram(binwidth = 5)
输出
Facet Layer
它用于将数据分割成整个数据集的子集,并允许子集在同一图上被可视化。在这里,我们根据传输类型分离行,根据圆柱体分离列。
# Facet Layer
p <- ggplot(data = mtcars,
aes(x = hp, y = mpg,
shape = factor(cyl))) + geom_point()
# Separate rows according to transmission type
p + facet_grid(am ~ .)
# Separate columns according to cylinders
p + facet_grid(. ~ cyl)
输出
统计层
在这一层中,我们使用分选、平滑、描述性、中间性等方法来转换我们的数据。
# Statistics layer
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
geom_point() +
stat_smooth(method = lm, col = "red")
输出
坐标层
在这些层中,数据坐标被一起映射到图形的所述平面上,我们调整轴和改变显示数据的间距与控制图的尺寸。
# Coordinates layer: Control plot dimensions
ggplot(data = mtcars, aes(x = wt, y = mpg)) +
geom_point() +
stat_smooth(method = lm, col = "red") +
scale_y_continuous("mpg", limits = c(2, 35),
expand = c(0, 0)) +
scale_x_continuous("wt", limits = c(0, 25),
expand = c(0, 0)) + coord_equal()
输出
Coord_cartesian()来适当放大
# Add coord_cartesian() to proper zoom in
ggplot(data = mtcars, aes(x = wt, y = hp, col = am)) +
geom_point() + geom_smooth() +
coord_cartesian(xlim = c(3, 6))
输出
主题层
该层控制显示的细微之处,如字体大小和背景颜色属性。
例1: 主题层- element_rect() 函数
# Theme layer
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
geom_point() + facet_grid(. ~ cyl) +
theme(plot.background = element_rect(
fill = "black", colour = "gray"))
输出
例2 :
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
geom_point() + facet_grid(am ~ cyl) +
theme_gray()
输出
ggplot2 提供各种类型的可视化。更多的参数可以用在软件包中,因为该软件包对数据的可视化有更大的控制力。许多包可以与ggplot2包集成,使可视化的数据具有交互性和动画性。