R语言ggplot2包:qplot简介

2019-08-06

qplot是quick plot的缩写,与R系统的基本绘图函数plot类似。

# 查看qplot的帮助文档
?qplot

diamonds数据集

diamonds是ggplot2中的内置数据集,内含54000颗钻石的价格和质量的信息。钻石质量的四个“C”:克拉重量(carat)、切工(cut)、颜色(color)和净度(clarity),五个物理指标:深度(depth)、钻面宽度(table)、x、y和z。 钻石的测量示意图

由于diamonds数据集没有经过很好的预处理,从该数据集中随机提取100个样本。

# 让样本可重复
> library(ggplot2)
> set.seed(1410)
> dsmall <- diamonds[sample(nrow(diamonds), 100), ]

qplot绘制散点图

qplot(carat, price, data = diamonds) 散点图 ** qplot(log(carat), log(price), data = diamonds) 取log后的散点图 ** qplot(carat, x * y * z, data = diamonds) 钻石的体积与重量关系

qplot可以自动识别分配不同组别的颜色

qplot(carat, price, data = dsmall, colour = color) 不同颜色表示分组 *** qplot(carat, price, data = dsmall, shape = cut) 不同形状表示分组

调节图片的透明度

qplot(carat, price, data = diamonds, alpha = I(1/10)) alpha = I(1/10) ** qplot(carat, price, data = diamonds, alpha = I(1/100)) alpha = I(1/100) ** qplot(carat, price, data = diamonds, alpha = I(1/200)) alpha = I(1/200) ***

  • 二维的变量关系: qplot的参数geom可以设置绘制图形的种类 geom = “point” 散点图 geom = “smooth” 平滑曲线,展示标准误差 geom = “boxplot” 箱线图 geom = “path”和geom = “line”可以在数据点之间连线
  • 一维的变量分布
    • 连续变量 geom = “histogram” 直方图 geom = “freqpoly” 频率多边图 geom = “density” 密度曲线
    • 离散变量 geom = “bar”

      添加平滑曲线

      使用dsmall数据集绘图

qplot(carat, price, data = dsmall, geom = c(“point”, “smooth”)) dsmall平滑曲线与散点图

使用diamonds数据集绘图

qplot(carat, price, data = diamonds, geom = c(“point”, “smooth”)) diamonds平滑曲线与散点图

如果不希望显示标准误,设置se = FALSE

qplot(carat, price, data = diamonds, geom = c(“point”, “smooth”), se = FALSE) 不显示误差

geom = "smooth"

当样本较小时,默认使"loess",可以通过?loess来查看算法的细节,调节span 参数调整曲线的平滑度。 ***

qplot(carat, price, data = dsmall, geom = c(“point”, “smooth”), span = 0.2) span = 0.2

qplot(carat, price, data = dsmall, geom = c(“point”, “smooth”), span = 1) span = 1 *** 当样本大于1000时,qplot会自动调用 “lm” 算法用于回归模型,”gam” 算法用于广义线性可加模型,”rlm”算法用于稳健回归(robust regression)。

箱线图与扰动点图

利用扰动点图和箱线图来考察以颜色为条件的每克拉价格的分布。从左到右,每克拉价格的跨度逐渐减少,但分布的中位数无明显变化。

qplot(color, price/carat, data = diamonds, geom = “jitter”) 扰动点图 *** qplot(color, price/carat, data = diamonds, geom = “boxplot”) 箱线图

改变 alpha 的取值

可以查看数据集中的地方。然而,箱线图依然是一个更好的选择。

qplot(color, price/carat, data = diamonds, geom = “jitter”, alpha = I(1/5)) image.png ** qplot(color, price/carat, data = diamonds, geom = “jitter”, alpha = I(1/50)) image.png ** qplot(color, price/carat, data = diamonds, geom = “jitter”, alpha = I(1/200)) image.png

直方图与密度曲线图

展示钻石重量的分布。左图使用的是 geom=’histogram’ 右图使用的是

geom=’ density’。

qplot(carat, data = diamonds, geom = “histogram”) 钻石重量的分布直方图

qplot(carat, data = diamonds, geom = “density”) 钻石重量的分布密度曲线图

调整直方图的组距。

qplot(carat, data = diamonds, geom = “histogram”, binwidth = 1, xlim = c(0, 3)) binwidth = 1

qplot(carat, data = diamonds, geom = “histogram”, binwidth = 0.1, xlim = c(0, 3)) binwidth = 0.1

qplot(carat, data = diamonds, geom = “histogram”, binwidth = 0.01, xlim = c(0, 3)) binwidth = 0.01

分组比较变量

qplot(carat, data = diamonds, geom = “density”, colour = color) 分组密度分布

qplot(carat, data = diamonds, geom = “histogram”, fill = color) 分组直方图分布

钻石颜色的条形图

钻石颜色分组的计数

qplot(color, data = diamonds, geom = “bar”) 钻石颜色分组的计数 按 weight=carat进行加权,展示了每种颜色的钻石的总重量 qplot(color, data = diamonds, geom = “bar”, weight = carat) + scale_y_continuous(“carat”) 按 weight=carat进行加权

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

使用 geom = ‘line’ 绘制线条图

失业人口的比例

qplot(date, unemploy/pop, data = economics, geom = “line”) 失业人口的比例

失业星期数的中位数

qplot(date, uempmed, data = economics, geom = “line”) 失业星期数的中位数

使用geom = “path”绘制路径图

重叠在一起的的散点图和路径图 qplot(unemploy/pop, uempmed, data = economics, geom = c(“point”, “path”)) 散点图和路径图

只有路径图,其中年份用颜色进行了展示。

year <- function(x) as.POSIXlt(x)$year + 1900 qplot(unemploy/pop, uempmed, data = economics, geom = “path”, colour = year(date)) 路径图

在一个面板上绘制多个图形

展示以颜色为条件的重量的直方图的频数

qplot(carat, data = diamonds, facets = color ~ ., geom = “histogram”, binwidth = 0.1, xlim = c(0, 3)) 多个频数直方图 展示以颜色为条件的重量的直方图的频率,频率比较不同分组的分布时,不受样本量大小的影响,规模不同,也可以比较。 qplot(carat, ..density.., data = diamonds, facets = color ~ ., geom = “histogram”, binwidth = 0.1, xlim = c(0, 3)) 多个频率直方图 高质量的钻石 (颜色 D) 在小尺寸上的分布是偏斜的,而随着质量的下降,重量的分布会变得越来越平坦。

其他参数

  • main:设置图形的标题
  • xlab, ylab:设置x轴、y轴的标签文字

    qplot(carat, price, data = dsmall, xlab = “Price ($)”, ylab = “Weight (carats)”, main = “Price-weight relationship”) 设置图形的标题

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

    qplot(carat, price/carat, data = dsmall, ylab = expression(frac(price, carat)), xlab = “Weight (carats)”, main = “Small diamonds”, xlim = c(0.2, 1)) 设置x轴和y轴的显示区间

  • log:字符型向量,显示对哪一坐标轴取log,log = “x”对x轴取对数,log = “xy”对x轴和y轴都取对数

    qplot(carat, price, data = dsmall, log = “xy”) 对x轴和y轴都取对数