免费试用
banner

R语言数据可视化05:散点图

作者: afenxi来源: afenxi时间:2017-07-09 12:41:530

摘要:散点图通常是用来表述两个连续变量之间的关系,图中的每个点表示目标数据集中的每个样本。

散点图简介

散点图通常是用来表述两个连续变量之间的关系,图中的每个点表示目标数据集中的每个样本。

同时散点图中常常还会拟合一些直线,以用来表示某些模型。

绘制基本散点图

本例选用如下测试数据集:

R语言数据可视化05:散点图-数据分析网

绘制方法是首先调用ggplot函数选定数据集,并在aes参数中指明横轴纵轴。然后调用散点图函数geom_point()便可绘制出基本散点图。R语言示例代码如下:

1 2 3 4 # 基函数 ggplot(ah, aes(x = ageYear, y = heightIn)) +   # 散点图函数   geom_point()

运行结果:

R语言数据可视化05:散点图-数据分析网 基于颜色和点形对数据进行分组

本例选用如下测试数据集:

R语言数据可视化05:散点图-数据分析网

绘制方法是在基础散点图之上再在基函数的美学参数集里设置一个美学变量。可指定colour或者shape两种参数,分别将不同分组以不同颜色/点形表述。R语言示例代码(基于颜色分组)如下:

1 2 3 4 # 基函数:colour设置分组 ggplot(sah, aes(x = ageYear, y = heightIn, colour = sex)) +   # 散点图函数   geom_point()

运行结果:

R语言数据可视化05:散点图-数据分析网

R语言示例代码(基于点形分组)如下:

1 2 3 4 # 基函数:shape设置分组 ggplot(sah, aes(x = ageYear, y = heightIn, shape = sex)) +   # 散点图函数   geom_point()

运行结果:

R语言数据可视化05:散点图-数据分析网

说明:可自定义点形,共有大概36种点形可供选择。具体请参考R语言ggplot2手册。

映射连续型变量

本例选用如下测试数据集:

R语言数据可视化05:散点图-数据分析网

上一个示例中,映射到分组的变量是离散型变量。而对于除了横轴纵轴之外的连续型变量,也可以映射到散点图的色深和点大小上。R语言示例代码(绑定颜色)如下:

1 2 3 4 # 基函数:colour绑定连续变量 ggplot(sahw, aes(x = ageYear, y = heightIn, colour = weightLb)) +   # 散点图函数   geom_point()

运行结果:

R语言数据可视化05:散点图-数据分析网

R语言示例代码(绑定大小)如下:

1 2 3 4 # 基函数:size绑定连续变量 ggplot(sahw, aes(x = ageYear, y = heightIn, size = weightLb)) +   # 散点图函数   geom_point()

运行结果:

R语言数据可视化05:散点图-数据分析网 处理散点重叠

本例选用如下测试数据集:

R语言数据可视化05:散点图-数据分析网

如果图中的散点重叠现象比较严重,可以在散点图中设置散点的透明度来进行可视化。R语言示例代码如下:

1 2 3 4 5 6 7 8 # 基函数:size、colour分别绑定连续变量 ggplot(sahw, aes(x = ageYear, y = heightIn, size = weightLb, colour = sex)) +   # 散点图函数:alpha设置散点透明度   geom_point(alpha = .5) +   # 使散点的面积正比与变量值   scale_size_area() +   # 标尺函数:palette设置配色方案   scale_colour_brewer(palette = "Set1")

运行结果:

R语言数据可视化05:散点图-数据分析网 添加回归模型拟合线

本例选用如下测试数据集:

R语言数据可视化05:散点图-数据分析网

如果需要网散点图中添加回归模型拟合线,最主要是调用stat_smooth()函数。R语言示例代码如下:

1 2 3 4 5 6 7 8 # 基函数:sex绑定离散变量 ggplot(sah, aes(x = ageYear, y = heightIn, colour = sex)) +   # 散点图   geom_point() +   # 标尺函数:palette设置配色方案   scale_colour_brewer(palette = "Set1") +   # 拟合回归线段以及置信域(默认0.95/通过level参数可自定义)   geom_smooth()

运行结果:

R语言数据可视化05:散点图-数据分析网

线段为曲线是因为参与拟合模型为局部线性回归模型。往geom_smooth()函数中加入"method = lm"即可拟合经典线性回归。结果如下图:

R语言数据可视化05:散点图-数据分析网 添加自定义模型拟合线

本例选用如下测试数据集:

R语言数据可视化05:散点图-数据分析网

上面一小节展示了用全局/局部回归模型拟合样本点并展示拟合线段,它使用ggplot2提供的geom_smooth()函数自动拟合并完成绘制。

但在更多时候,我们会使用其他包的模型(非ggplot2内置模型)拟合。针对这种情况,我们需要自定义一个函数。该函数接受模型、横纵轴名、横轴范围、横轴样本点数量等参数,输出一个包含预测变量和预测值的数据框。R语言实现代码如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # 函数功能:输出模型预测结果 # 参数说明: #   model: 模型变量 #   xvar: 预测变量集 #   yvar: 实际变量集 #   xrange: 预测变量取值范围 #   samples: 预测变量个数 # 函数输出:实际值 - 预测值数据集 predictvals = function(model, xvar, yvar, xrange = NULL, samples = 100, ...) # 按性别切割数据集并返回模型列表 models = dlply(sah, "sex", .fun = make_model) # 对不同数据集(男/女)进行预测 predvals = ldply(models, .fun = predictvals, xvar = "ageYear", yvar = "heightIn") # 绘制数据集散点图以及模型拟合线 ggplot(sah, aes(x = ageYear, y = heightIn, colour = sex)) +   geom_point() +   geom_line(data = predvals)

运行结果:

R语言数据可视化05:散点图-数据分析网 向散点图添加边际地毯

本例选用如下测试数据集:

R语言数据可视化05:散点图-数据分析网

方法很简单,在原先散点图绘制函数的基础上增加边际地毯函数就行。R语言实现代码如下:

1 2 3 4 5 6 # 基函数 ggplot(faithful, aes(x = eruptions, y = waiting)) +   # 散点图函数   geom_point() +   # 边际地毯函数   geom_rug()

运行结果:

R语言数据可视化05:散点图-数据分析网 向散点图添加标签

本例选用如下测试数据集:

R语言数据可视化05:散点图-数据分析网

往散点图中添加标签的方法也很简单,在原有散点图函数的基础上增加文本函数即可。R语言实现代码如下:

1 2 3 4 5 6 7 # 基函数 ggplot(cty_1, aes(x = healthexp, y = infmortality)) +   # 散点图函数   geom_point() +   # 文本函数:aes参数中:y将原有纵轴值向上偏移,label设置绑定文本   # 将y轴偏移的目的是为了让文本展示在样本点上方而不是中间   geom_text(aes(y = infmortality + .2, label = Name))

运行结果:

R语言数据可视化05:散点图-数据分析网

PS:该示例中我们在文本绘制函数中重定义了美学特征集。之后文本绘制函数将使用新的美学特征集,但其他绘制函数的不变。

banner
看过还想看
可能还想看
热点推荐
Yonghong的价值观:以卓越的数据技术为客户创造价值,实现客户成功。
免费试用