R:ggplot2(1),从qplot开始入门(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/genome_denovo/article/details/83004899

《ggplot2:数据分析与图形艺术》

总结:ggplot2的安装和调用,qplot绘图,data参数表示绘图数据集,前两个参数默认是x和y的值,x和y是data数据集的子集,同时x和y也可以是数据集子集的组合,例如y=xyz。颜色、大小、形状可以通过数据集中子集的值来指定,分别用color,shape,size三个参数指定,同时I()表示将某个参数设定为固定值。通过几何对象可以对数据进行不同形式对展示,并能够实现统计变换;geom="point"绘制散点图,geom="smooth"拟合一条平滑曲线,geom="boxplot"绘制箱线图,geom="path"和geom="line"可在数据点之间绘制连线,geom="histogram"绘制直方图,geom="freqplot"绘制频率多边形,geom="density"绘制密度曲线,geom="bar"绘制条形图。添加平滑曲线,可参见2.5.1的内容。

第1章 简介

数据的几何对象包括点、线、条形等,图形属性包括颜色、形状、大小等,可实现统计变换,设定坐标系及分面
交互式图形软件包GGobi可通过rggobi软件包与R进行连接。
R中图形软件包的列表,http://cran.r-project.org/web/views/Graphics.html。
> install.packages("ggplot2")#ggplot2的安装
> library(ggplot2)#ggplot2的语法导入

第2章 从qplot开始入门

2.1 简介

本章介绍qplot()的基本用法,图形属性,几何对象,分面,外观调整以及与plot()的语法区别。qplot(x, y, data=, color=, shape=, size=, alpha=, geom=, method=, formula=, facets=, xlim=, ylim= xlab=, ylab=, main=, sub=)

2.2 数据集

采用ggplot2包的内置数据集:> diamonds
当然也可以随机抽取其中的100个数据,作为另外的数据集
> dsmall <- diamonds[sample(nrow(diamonds), 100), ]
> diamonds
# A tibble: 53,940 x 10
carat cut color clarity depth table price x y
> dsmall
# A tibble: 100 x 10
carat cut color clarity depth table price x y
<dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl>
1 1.01 Very … H SI1 63.4 55 4249 6.32 6.27
2 0.77 Ideal E SI1 61 56 3827 5.92 5.94
3 0.9 Good F SI1 63.9 59 4062 6.06 6.09

10 1.01 Premi… E SI1 60 59 5973 6.53 6.47
# ... with 90 more rows, and 1 more variable: z <dbl>

2.3 基本用法

qplot()的前两个参数是x和y,分别代表图中所画对象的x坐标和y坐标。
另外data作为可选参数,表示绘图的数据集,x和y是data数据集的子集
例如:
> diamonds
# A tibble: 53,940 x 10
carat cut color clarity depth table price x y
> qplot(carat, price, data=diamonds)#carat和price是diamonds的子集
qplot(x=carat, y=price, data=diamonds)表示的含义与上面相同(建议用该方法)
qplot()同样支持将变量的函数作为参数,
所以可以画出log(price)对log(carat)对图形,即对price和carat的数值取对数值用于绘图
> qplot(x=log(carat), y=log(price), data=diamonds)
在这里插入图片描述
这时注意图形的x轴及y轴的坐标名称,也有相应的变化。
qplot()同样,函数的参数同样可以是已有变量的某种组合;体积(用x * y * z近似)
> qplot(x=carat, y=x*y*z, data=diamonds)
所以钻石的质量和体积之间存在线性关系。

2.4 颜色、大小、形状和其他图形属性

qplot与plot的不同在于给图中的点设定颜色、大小、形状时采用设定数据集的方式,
即作为data数据集的一个子集;而plot绘图需要用户将数据的一个分类变量依次输入进去。
例如:向重量和价格的散点图内添加颜色和切工的信息
> attach(dsmall)
> color
[1] H E F H D G H E E E H G I G F F F I G D E G G I J F I
[28] F I F H F E H G E D J D G J D I E E G F J H J E E I E
[55] J I D H F F D H E F G E H I I H E G G E F F F F F F E
[82] E F H E F E E G E E F F E E F I E D I
Levels: D < E < F < G < H < I < J
> qplot(x=carat, y=price, data=dsmall, color=color)#Error in UseMethod(“depth”) : "depth"没有适用于"NULL"目标对象的方法
(出现这个问题是在交互模式下,输入了attach(dsmall)所以x和y无法定位data数据的具体数值了,如果没输入则是可以的)
> qplot(carat, price, data=dsmall, color=color)#是否输入attach(dsmall)用这个语句不影响
在这里插入图片描述
绘图会根据color数据集的因子factor()进行分类,不同的分类会随机设定不同的颜色。
> qplot(x=carat, y=price, data=dsmall, shape=cut)#按照切工进行分类
> qplot(carat, price, data=dsmall, color=color, shape=cut)#按照切工和颜色分别进行分类
也可以通过I()来手动设定图形属性,例如,color=I(“red”)或size=I(2)。(更详细的内容会在4.5.2节进行介绍)
> qplot(carat, price, data=dsmall, color=I("red"), size=I(2))#绘制的点图,点的颜色都为红色,点的大小都为2
在这里插入图片描述
I()用法详解,了解一下
可以使用半透明的颜色减轻图形元素重叠的现象。创建半透明的颜色可以使用alpha图形属性,取值从0(完全透明)到1(完全不透明),透明度可以用分数来表示,1/10或1/200等。
> qplot(carat, price, data=diamonds, alpha=I(1/10))

颜色和形状适合于分类变量,大小适合于连续变量。可用分面来区分不同组别处理大数据量数据。

2.5 几何对象

qplot和通过改变几何对象(简写geom)绘制多种图形。
几何对象描述了应该用何种对象来对数据进行展示,其中有些几何对象关联了相应的统计变换。例如:直方图就相当于分组计数再加上条形的几何对象。
按照数据的维度进行划分,
考察二维的变量关系可用如下几何对象:

  • geom = “point” 可以绘制散点图。这是当你指定了x和y参数给qplot()时默认的设置;
  • geom = “smooth” 将拟合一条平滑曲线,并将曲线和标准误展示在图中;
  • geom = “boxplot” 可以绘制箱线图,用以概括一系列点点分布情况;
  • geom = “path” 和 geom = “line” 可以在数据点之间绘制连线。作用是探索时间和其他变量之间的关系。线条只能创建从左到右的连线(line),而路径图则可以是任意的方向(path)。

考察一维的变量关系可用如下几何对象:

  • geom = “histogram” 可以绘制直方图;
  • geom = “freqpoly” 可以绘制频率多边形;
  • geom = “density” 可以绘制密度曲线;
  • 上述三种绘图函数适用于连续变量,如果只有x参数传递给qplot(),那么直方图几何对象就是默认的选择;
  • geom = “bar” 可以绘制条形图;适用于离散变量。

2.5.1 向图中添加平滑曲线

在数据点中添加平滑曲线,可帮助数据展示其趋势,可通过使用smooth几何对象加以完成。利用c()函数来将多个几何对象组成一个向量传递给geom,几何对象会按照指定的顺序进行堆叠。
> qplot(carat, price, data=diamonds, geom=c("point", "smooth"))
在这里插入图片描述
> qplot(carat, price, data=dsmall, geom=c("point", "smooth"))
在这里插入图片描述
平滑曲线灰色的宽带,表示标准误所在的范围。
如果不想绘制标准误,可以使用se=FALSE;
qplot(carat, price, data=dsmall, geom=c(“point”, “smooth”), se=FALSE)
利用method参数可以选择许多不同的平滑器:
method=“loess”,当n较小时,是默认选项,使用的hi局部回归的方法。关于这一算法的更多细节可以查阅帮助?loess。> ?loess
曲线的平滑程度是由span参数控制的,其取值范围是从0(很不平滑)到1(很平滑)。
> qplot(carat, price, data=dsmall, geom=c("point", "smooth"), span=0.2)#不平滑
> qplot(carat, price, data=dsmall, geom=c("point", "smooth"), span=1)#平滑
Loess对于大数据并不十分实用(内存的消耗是O(n**2)),因此当n超过1000时将默认采用另一种平滑算法。
可以使用method=“gam”,formula=y~s(x)来调用mgcv包拟合一个广义可加模型。这与在lm中使用样条相类似,但样条的阶数是通过数据估计得到的。对于大数据,请使用公式y~s(x, bs="cs"),这是数据量超过1000时默认使用的选项。
> library(mgcv)
> qplot(carat, price, data=dsmall, geom=c("point", "smooth"), method="gam", formula=y~s(x))
在这里插入图片描述
> qplot(carat, price, data=dsmall, geom=c("point", "smooth"), method="gam", formula=y~s(x, bs="cs"))
在这里插入图片描述
method="lm"拟合的是线性模型。默认情况下会拟合一条直线,但可以通过指定formula=y~poly(x, 2)来拟合一个二次多项式或加载splines包以使用自然样条:formula=y~ns(x, 2)。第二个参数是自由度:自由度取值越大,曲线的波动也越大。可以在公式中任意指定x和y的关系。
> library(splines)
> qplot(carat, price, data=dsmall, geom=c("point", "smooth"), method="lm")
在这里插入图片描述
> qplot(carat, price, data=dsmall, geom=c("point", "smooth"), method="lm", formula=y~ns(x, 5))
在这里插入图片描述
mothod="rlm"与lm类似,但采用了一种更稳健的拟合算法,使得结果对异常值不敏感。这一方法是MASS包的一部分,因此需要先加在MASS包。

猜你喜欢

转载自blog.csdn.net/genome_denovo/article/details/83004899