ggplot2:数据分析与图形艺术 学习笔记02---第二章 从qplot开始入门

2.1 简介

qplot() 将是学习的第一个ggplot()作图函数,qplot的意思是快速作图(quick plot)

qplot() 被设计的与plot() 很像。

可以通过帮助命令 ?qplot来获取 完整参数列表。

2.2 数据集

diamonds 数据集包含了54000颗钻石的价格和质量的信息,数据已经放在ggplot()软件包。

数据涵盖反映钻石质量的四个“C” carat(克拉),cut(切工),color(颜色)和 clarity(净度)

以及五个物理指标:depth(深度),table(钻面宽度),x,y和z

Clipboard Image.png

library(ggplot2)
?diamonds
dim(diamonds)
str(diamonds)
head(diamonds)

  carat       cut color clarity depth table price     x     y     z
  <dbl>     <ord> <ord>   <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1  0.23     Ideal     E     SI2  61.5    55   326  3.95  3.98  2.43
2  0.21   Premium     E     SI1  59.8    61   326  3.89  3.84  2.31
3  0.23      Good     E     VS1  56.9    65   327  4.05  4.07  2.31
4  0.29   Premium     I     VS2  62.4    58   334  4.20  4.23  2.63
5  0.31      Good     J     SI2  63.3    58   335  4.34  4.35  2.75
6  0.24 Very Good     J    VVS2  62.8    57   336  3.94  3.96  2.48

 我们使用一个1000的随机样本dsmall,用这个数据集进行小数据的作图展示

set.seed(1234)
dsmall <- diamonds[sample(nrow(diamonds),1000),]

# set.seed() 用于设定随机数种子,一个特定的种子可以产生一个特定的伪随机序列

# 这个函数的主要目的,是让你的模拟能够可重复出现

2.3 基本用法

qplot(carat,price,data = dsmall)
qplot(log(carat),log(price),data = dsmall)
qplot(carat,x*y*z,data = dsmall)

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

qplot(carat,price,data = dsmall,colour = color)
qplot(carat,price,data = dsmall,shape = cut)

颜色、大小和形状是 图形属性的具体例子,它们都是影响数据如何进行展示的视觉属性。

每个图形属性都对应了一个称为 标度的函数,其作用是将数据的取值映射到该图形属性的有效取值。

qplot(carat,price,data = dsmall,alpha = I(1/10))
qplot(carat,price,data = dsmall,alpha = I(1/100))

对于大数据而言,使用半透明的颜色可以有效减轻图形元素重叠的现象。

可以使用alpha图形属性,调节透明度,取值为[0,1]

2.5 几何对象

下面这些几何对象适用于考察二维的变量关系

geom = "point" 绘制散点图,这是你指定了x和y参数给qplot() 时默认的设置

geom = "smooth" 拟合一条平滑曲线,并将曲线和标准误差展示在图中

geom = "boxplot" 绘制箱线图,用以概括一系列点的分布情况

geom = "path" geom = "line",可以在数据点之间绘制连线,传统作用是探索时间和其他变量之间的关系

对于一维的分布,几何对象的选择是由变量的类型指定的

对于连续型变量:

geom = "histogram" 直方图

geom = "freqpoly“ 频率多边形

geom = "density" 密度曲线

# 如果只有x参数传递给qplot(),那么直方图就是默认选择

对于离散变量

geom = “bar" 条形图

2.5.1 向图中添加平滑曲线

qplot(carat,price,data = dsmall,geom = c("point","smooth"))

如果不想绘制标准误差,可以使用 se = FALSE

利用 method参数,可以选择许多不同的平滑器

method = "loess" , 当n较小时是默认选项,使用的是局部回归的方法。

曲线的平滑程度是由span参数控制的,取值范围[0,1](很不平滑,很平滑)

qplot(carat,price,data = dsmall,geom = c("point","smooth"),method = "loess",span = 0.2)
qplot(carat,price,data = dsmall,geom = c("point","smooth"),method = "loess",span = 1)

method = "gam",formula = y ~s(x) 来调用mgcv包拟合一个广义可加模型。

对于大数据,请使用公式 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)

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 ~poly(x,3))
qplot(carat,price,data = dsmall,geom = c("point","smooth"),method = "lm",formula = y ~ns(x,10))

method = "rlm" 与lm类似,但采用了一种更稳健的拟合算法,使得结果对异常值不太敏感,需要加载MASS包

2.5.2 箱线图和扰动点图

如果一个数据集中包含一个分类变量和一个或多个连续变量

连续变量会如何随着分类变量水平的变化而变化?

qplot(color,price/carat,data = dsmall,geom = "jitter")
qplot(color,price/carat,data = dsmall,geom = "boxplot")

重叠问题可以使用透明化解决

qplot(color,price/carat,data = dsmall,geom = "jitter",alpha = I(1/5))

2.5.3 直方图和密度曲线图

qplot(carat,data = dsmall,geom = "histogram")
qplot(carat,data = dsmall,geom = "density")

对于密度曲线图,adjust参数控制曲线的平滑程度

对于直方图,binwidth参数通过设定组距来调节平滑度

qplot(carat,data = dsmall,geom = "histogram",binwidth = 0.5,xlim = c(0,3))
qplot(carat,data = dsmall,geom = "histogram",binwidth = 0.1,xlim = c(0,3))
qplot(carat,data = dsmall,geom = "histogram",binwidth = 0.01,xlim = c(0,3))

Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

要在不同组之间对分布进行比较,只需要再加上一个图形映射

qplot(carat,data = dsmall,geom = "density",colour = color)
qplot(carat,data = dsmall,geom = "histogram",fill = color)

Clipboard Image.png

Clipboard Image.png

2.5.4 条形图

qplot(color,data = dsmall,geom = "bar")

按重量加权

qplot(color,data = dsmall,geom = "bar",weight = carat) + scale_y_continuous("carat")

Clipboard Image.png

Clipboard Image.png

2.5.5 时间序列中的线条图和路径图

使用了 economics数据集,包含了美国过去40年的经济数据

qplot(date,unemploy/pop,data = economics,geom = "line")
qplot(date,uempmed,data = economics,geom = "line")

Clipboard Image.png

Clipboard Image.png

2.6 分面

利用图形属性(颜色和形状)来比较不同分组,将所有的组绘制在同一张图中

分面是另外一种实现方式,将数据分割成若干子集,然后创建一个图形矩阵

如果只想指定一行或一列,可以使用.作为占位符,例如 row_var~. 创建一个单列多行的图形矩阵

..density.. 告诉ggplot2将密度而不是频数映射到y轴

qplot(carat,data = dsmall,facets = color ~.,geom = "histogram",binwidth = 0.1,xlim = c(0,3))
qplot(carat,..density..,data = dsmall,facets = color ~.,geom = "histogram",binwidth = 0.1,xlim = c(0,3))

Clipboard Image.png

Clipboard Image.png

2.7 其他选项

xlim,ylim 设置x轴和y轴的显示区间

log 说明哪个坐标轴应该取 对数

main 图形的主标题

xlab,ylab 设置x轴和y轴的标签文字

qplot(carat,price,data = dsmall,xlab = "Price($)",ylab = "Weight(carats)",main = "Price-Weight")
qplot(carat,price/carat,data = dsmall,ylab = expression(frac(price,carat)),xlab = "Weight",main = "Small Diamonds",xlim = c(.2,1))
qplot(carat,price,data = dsmall,log = "xy")

2.8 与plot函数的区别

qplot不是泛型函数,将不同类型的R对象传入qplot时,它并不会匹配默认的函数调用

一般而言,可以将一个变量传递给你感兴趣的图形属性,这样该变量将进行标度转换并显示在图例上

ggplot2中的图形属性名称(如colour,shape,size)比基础绘图系统中的名称(如col,pch,cex)更直观,容易记忆

ggplot2,向已有的图形添加元素,需要在当前图形中加入额外的图层。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值