ggplot2:图形与艺术笔记

本文深入探讨ggplot2库的qplot()函数,介绍如何使用它绘制散点图、平滑曲线、箱线图、直方图等图形,并探讨图形属性、几何对象、广义模型Loess和线性模型。通过实例展示了如何控制平滑程度、创建复杂图形并进行分组。此外,还涵盖了图形保存和地图绘制。
摘要由CSDN通过智能技术生成

1 qplot()函数

1.1 qplot()的基本用法

qplot()函数的前两个参数分表表示自变量与因变量,其中含有data可选参数,当我们指定了数据时,会在指定的数据集中寻找变量名。当我们默认不指定data的参数时,qplot()会自动建立。

1.1.1 散点图

与plot()函数类似,我们绘制散点图仍然需要个给定自变量与因变量以及原数据。

#散点图
qplot(carat,price,data = diamonds)

在这里插入图片描述
从上图来看,数据分布大概呈现指数分布,因此我们进行对数变换处理,观察处理后的数据分布情况。

#对数变换处理
qplot(log(carat),log(price),data = diamonds)

在这里插入图片描述
从上图来看,数据呈现线性分布,但是由于数据量太大,数据出现大量的重叠,我们可以将数据进行再次处理。我们可以研究体积与质量之间的关系。

#研究体积与质量之间的关系
qplot(carat,x*y*z,data = diamonds)

在这里插入图片描述
从图中来看,体积与质量之间大致为线性关系,数据大部分落在直线上,但存在或多或少的异常值点。

1.2 图形的基本属性

qplot()中,图形的颜色始可以自动确定的,这个比plot()中要简洁一些。现在使用diamonds数据集中的质量与价格的数据,观察两者之间的关系,并绘制散图形。

#将颜色映射道点
p1 <- qplot(carat,price,data = dsmall,colour = color)
#将类型映射到点
p2 <- qplot(carat,price,data = dsmall,shape = cut)

#导入图片汇总需要的函数包
library("gridExtra")
grid.arrange(p1,p2, nrow=2)

在这里插入图片描述
在qplot()中,可以用I()来控制图形的属性值,以及透明程度可以用alpha来解决。其中当alpha的值从0到1时图片从完全透明到完全不透明。
在这里插入图片描述

1.3 几何对象

qplot()几乎可以画出我们平时生活中常见的图。其中:
geom = "point"可以绘制散点图;
geom = "smooth"可以拟合一条平滑曲线,并将曲线的标准差展示出来;
geom = "boxplot"可以绘制箱线图,用来概括数据点的分布情况;
geom = "path"和geom = "line"可以在数据点之间绘制连线,通常用来探索时间与变量之间的关系。
对于连续变量,geom=“histog”绘制直方图,geom=“freqpoly”绘制频率多边形,geom=“Density”绘制密度曲线,当只有一个参数x时,那么默认的为直方图;当变量为离散型时,我们则用geom = "bar"来绘制条形图。

1.3.1 添加平滑曲线

当我们在散点数据太多时,很难发现数据的一些趋势,在这种情况下,我们可以添加一条平滑的曲线来观察。

#添加平滑曲线
q1 <- qplot(carat,price,data = dsmall,
            geom = c("point","smooth"))
#图形堆叠
q2 <- qplot(carat,price,data =diamonds ,
            geom = c("point","smooth"))
#设置图例
library("gridExtra")
grid.arrange(q1,q2,nrow = 2)

在这里插入图片描述
从图中可以看出,第一个为质量与价格的关系,第二个为整体数据的散点图,在整体数据的散点图中,我峨嵋你你很难看出质量与价格的关系,而第一个图中单独绘制散点图时就可以清楚的看出来,当我们把第一个图加入到第二个图中来时,根据线性趋势就能在整体散点图中看到价格与质量两者之间的关系。

1.3.2 平滑与非平滑的控制

平滑曲线与非平滑曲线的控制有span来控制,从0到1为非平滑到平滑。

#平滑属性的控制
q3 <- qplot(carat,price,data = dsmall,
            geom = c("point","smooth"),span = 0.2)
#图形堆叠
q4 <- qplot(carat,price,data =diamonds,
            geom = c("point","smooth"),span = 1)
#设置图例
library("gridExtra")
grid.arrange(q3,q4,nrow = 2)

在这里插入图片描述

1.4 广义模型Loess

当我们的数据量超过1000时,可以使用method = ”gam“,formula = y ~ s(x)。。以及调用函数包mgcv来拟合广义可加模型。

#调用函数包
library("nlme")
library("mgcv")
m1 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值