📜  ggplot2教程(1)

📅  最后修改于: 2023-12-03 15:15:15.848000             🧑  作者: Mango

ggplot2教程

介绍

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()

输出:

scatterplot

这里的ggplot函数指定了数据集和关于 x 和 y 列的映射。geom_point函数指定绘制散点图,并将其添加到已经存在的 ggplot 对象上。

绘图元素

在ggplot2中,绘图是由各种图层构成的,每个图层可以添加不同的数据和图形。ggplot2也支持绘制不同类型的图形。

数据

ggplot2支持多种类型的数据,包括

  • 向量:用于绘制单条线或曲线
  • 数据框:用于绘制多组数据以及数据点
  • 列表:用于绘制多个图层和数据点

可以使用ggplot函数指定数据集和映射关系。比如下面这个例子使用mtcars数据集绘制汽车发动机排量和每加仑汽油耗用之间的关系:

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point()

输出:

scatterplot

这里的aes函数指定了x和y列在数据集中的位置。

几何对象

几何对象是用于绘制各种图形的函数,比如点、线、直方图等等。可以使用geom_*函数添加各种几何对象到绘图上下文中。例如,下面这个例子使用ggplotgeom_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')

输出:

dotplot

这里geom_dotplot函数用于绘制密度可视化图形。其他常用的几何对象还包括:geom_point(散点图)、geom_line(线图)、geom_bar(条形图)、geom_histogram(直方图)等等。通过不同的几何对象和数据映射方式,可以创建出各种不同的图形。

坐标系

坐标系可以用于转换和标识图形中的坐标和比例。ggplot2提供了多种可用的坐标系,比如直角坐标系、极坐标系、地图投影坐标系等等。可以使用coord_*函数来设置不同的坐标系。例如,下面这个例子使用ggplotcoord_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")

输出:

piechart

在这个例子中,coord_polar函数将坐标系设置为极坐标系。

标度

标度用于转换和标识数据的值域范围和比例。ggplot2提供了多种可用的标度,包括颜色标度、尺度标度、填充标度等等。可以使用scale_*函数来设置不同的标度。例如,下面这个例子使用ggplotscale_x_continuous绘制diamonds数据集中钻石价格和重量之间的散点图,并将x轴标度设置为对数标度:

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

输出:

logscatterplot

标度也可以用于更改绘图中的元素,如轴线标签、图例标签和标题等等。

完结

通过上面简单的介绍,我们已经掌握了ggplot2的基本绘图方式和各个绘图元素的作用。ggplot2还提供了很多高级绘图技术,如光滑曲线和统计变换,有兴趣的读者可以查阅官方文档。