📅  最后修改于: 2023-12-03 15:15:15.848000             🧑  作者: Mango
ggplot2是R语言中的一个可视化库,它提供了一套基于图层的绘图系统,可以通过添加不同的图层来创建高度可定制化的图形,包括散点图、长条图、箱图等多种图形类型。ggplot2也支持高级绘图技术,比如绘制光滑曲线和使用坐标转换。
在使用ggplot2之前,需要先安装并导入该包。可以在R语言环境下运行以下命令进行安装:
install.packages("ggplot2")
引入包:
library(ggplot2)
下面我们来使用ggplot2对数据进行可视化。以diamonds数据集为例,该数据集包含了53940颗钻石的多个属性。
首先,我们可以看一下diamonds数据集的头几行:
head(diamonds)
输出:
carat cut color clarity depth table price x y z
1 0.23 Ideal E SI2 61.5 55 326 3.950 3.980 2.430
2 0.21 Good E SI1 59.8 61 326 3.890 3.840 2.310
3 0.23 Very Good E VS1 56.9 65 327 4.050 4.070 2.310
4 0.29 Good I VS2 62.4 58 334 4.200 4.230 2.630
5 0.31 Very Good J SI2 63.3 58 335 4.340 4.350 2.750
6 0.24 Very Good J VVS2 62.8 57 336 3.940 3.960 2.480
接下来我们可以使用ggplot2绘制diamonds数据集中钻石价格和重量之间的散点图:
ggplot(diamonds, aes(x = carat, y = price)) +
geom_point()
输出:
这里的ggplot
函数指定了数据集和关于 x 和 y 列的映射。geom_point
函数指定绘制散点图,并将其添加到已经存在的 ggplot 对象上。
在ggplot2中,绘图是由各种图层构成的,每个图层可以添加不同的数据和图形。ggplot2也支持绘制不同类型的图形。
ggplot2支持多种类型的数据,包括
可以使用ggplot
函数指定数据集和映射关系。比如下面这个例子使用mtcars
数据集绘制汽车发动机排量和每加仑汽油耗用之间的关系:
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
输出:
这里的aes
函数指定了x和y列在数据集中的位置。
几何对象是用于绘制各种图形的函数,比如点、线、直方图等等。可以使用geom_*
函数添加各种几何对象到绘图上下文中。例如,下面这个例子使用ggplot
和geom_dotplot
绘制diamonds数据集中各个颜色的钻石价格和重量的分布:
ggplot(diamonds, aes(x = price, y = carat, fill = color)) +
geom_dotplot(binaxis='y', stackdir='center', dotsize=0.5) +
scale_fill_brewer(type = 'qual')
输出:
这里geom_dotplot
函数用于绘制密度可视化图形。其他常用的几何对象还包括:geom_point
(散点图)、geom_line
(线图)、geom_bar
(条形图)、geom_histogram
(直方图)等等。通过不同的几何对象和数据映射方式,可以创建出各种不同的图形。
坐标系可以用于转换和标识图形中的坐标和比例。ggplot2提供了多种可用的坐标系,比如直角坐标系、极坐标系、地图投影坐标系等等。可以使用coord_*
函数来设置不同的坐标系。例如,下面这个例子使用ggplot
和coord_polar
绘制不同月份的饼图:
df <- data.frame(month = c('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'),
sales = c(2, 3, 5, 4, 6, 7, 8, 9, 11, 10, 4, 3))
ggplot(df, aes(x = "", y = sales, fill = month)) +
geom_bar(stat = "identity") +
coord_polar(theta = "y")
输出:
在这个例子中,coord_polar
函数将坐标系设置为极坐标系。
标度用于转换和标识数据的值域范围和比例。ggplot2提供了多种可用的标度,包括颜色标度、尺度标度、填充标度等等。可以使用scale_*
函数来设置不同的标度。例如,下面这个例子使用ggplot
和scale_x_continuous
绘制diamonds数据集中钻石价格和重量之间的散点图,并将x轴标度设置为对数标度:
ggplot(diamonds, aes(x = carat, y = price)) +
geom_point() +
scale_x_log10()
输出:
标度也可以用于更改绘图中的元素,如轴线标签、图例标签和标题等等。
通过上面简单的介绍,我们已经掌握了ggplot2的基本绘图方式和各个绘图元素的作用。ggplot2还提供了很多高级绘图技术,如光滑曲线和统计变换,有兴趣的读者可以查阅官方文档。