美文网首页
R绘图基础指南 | 3. 散点图(一)

R绘图基础指南 | 3. 散点图(一)

作者: 木舟笔记 | 来源:发表于2021-08-18 10:57 被阅读0次
    scatter.jpg

    3. 散点图

    [TOC]

    22

    散点图通常用于刻画两个连续型变量之间的关系。绘制散点图时,数据集中的每一个观测值都由每个点表示。

    3.1 绘制基本散点图

    library(gcookbook) 
    library(ggplot2)
    # 列出我们用到的列
    head(heightweight[, c("ageYear", "heightIn")])
    
    > head(heightweight[, c("ageYear", "heightIn")])
      ageYear heightIn
    1   11.92     56.3
    2   12.92     62.3
    3   12.75     63.3
    4   13.42     59.0
    5   15.92     62.5
    6   14.25     62.5
    
    ggplot(heightweight, aes(x=ageYear, y=heightIn)) + geom_point()
    
    unnamed-chunk-11
    # shape参数设置点型 size设置点的大小
    ggplot(heightweight, aes(x=ageYear, y=heightIn)) + 
      geom_point(shape=21)
    ggplot(heightweight, aes(x=ageYear, y=heightIn)) + 
      geom_point(size=1.5)
    
    image-20210816225649979

    3.2 使用点形和颜色属性进行分组

    head(heightweight[, c("sex", "ageYear", "heightIn")])
    > head(heightweight[, c("sex", "ageYear", "heightIn")])
      sex ageYear heightIn
    1   f   11.92     56.3
    2   f   12.92     62.3
    3   f   12.75     63.3
    4   f   13.42     59.0
    5   f   15.92     62.5
    6   f   14.25     62.5
    
    ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=sex)) + 
      geom_point()
    ggplot(heightweight, aes(x=ageYear, y=heightIn, shape=sex)) + 
      geom_point()
    
    unnamed-chunk-14 unnamed-chunk-15
    # scale_shape_manual()使用其它点形状
    #scale_colour_brewer()使用其它颜色
    ggplot(heightweight, aes(x=ageYear, y=heightIn, shape=sex, colour=sex)) +
      geom_point() +
      scale_shape_manual(values=c(1,2)) +
      scale_colour_brewer(palette="Set1")
    
    unnamed-chunk-17

    3.3 使用不同于默认设置的点形

    # 使用点形和填充色属性分别表示不同变量
    hw <- heightweight
    # 分组 Categorize into <100 and >=100 groups
    hw$weightGroup <- cut(hw$weightLb, breaks=c(-Inf, 100, Inf),
                          labels=c("< 100", ">= 100"))
    
    # 使用具有颜色和填充色的点形及对应于空值(NA)和填充色的颜色
    ggplot(hw, aes(x=ageYear, y=heightIn, shape=sex, fill=weightGroup)) +
      geom_point(size=2.5) +
      scale_shape_manual(values=c(21, 24)) +
      scale_fill_manual(values=c(NA, "black"),
                        guide=guide_legend(override.aes=list(shape=21)))
    
    
    unnamed-chunk-33

    3.4 将连续型变量映射到点的颜色或大小属性上

    ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=weightLb)) + 
      geom_point()
    
    ggplot(heightweight, aes(x=ageYear, y=heightIn, size=weightLb)) + 
      geom_point()
    
    image-20210817114855294
    # 默认点的大小范围为1-6mm
    # scale_size_continuous(range=c(2, 5))修改点的大小范围
    
    # 将色阶设定为由黑至白
    ggplot(heightweight, aes(x=weightLb, y=heightIn, fill=ageYear)) +
      geom_point(shape=21, size=2.5) +
      scale_fill_gradient(low="black", high="white")
    
    # 使用 guide_legend() 函数以离散的图例代替色阶
    ggplot(heightweight, aes(x=weightLb, y=heightIn, fill=ageYear)) +
      geom_point(shape=21, size=2.5) +
      scale_fill_gradient(low="black", high="white", breaks=12:17,
                          guide=guide_legend())
    
    image-20210817165620820
    # 调用scale_size_area()函数使数据点的面积正比于变量值。
    ggplot(heightweight, aes(x=ageYear, y=heightIn, size=weightLb, colour=sex)) +
      geom_point(alpha=.5) +
      scale_size_area() +   
      scale_colour_brewer(palette="Set1")
    
    unnamed-chunk-45

    3.5 处理图形重叠

    方法:

    • 使用半透明的点
    • 将数据分箱(bin),并用矩形表示
    • 将数据分箱(bin),并用六边形表示
    • 使用箱线图
    sp <- ggplot(diamonds, aes(x=carat, y=price))
    sp + geom_point()
    # 透明度
    sp + geom_point(alpha=.1)
    sp + geom_point(alpha=.01)
    
    # stat_bin2d()函数默认分别在x轴和y轴方向上将数据分割为30各组
    sp + stat_bin2d()
    
    # bin=50设置箱数,limits参数设定图例范围
    sp + stat_bin2d(bins=50) +
      scale_fill_gradient(low="lightblue", high="red", limits=c(0, 6000))
    
    image-20210817173245460
    # stat_binhex()函数使用六边形分箱
    library(hexbin)
    sp + stat_binhex() +
      scale_fill_gradient(low="lightblue", high="red",
                          limits=c(0, 8000))
    
    sp + stat_binhex() +
      scale_fill_gradient(low="lightblue", high="red",
                          breaks=c(0, 250, 500, 1000, 2000, 4000, 6000),
                          limits=c(0, 6000))
    
    image-20210817174431437
    sp1 <- ggplot(ChickWeight, aes(x=Time, y=weight))
    
    sp1 + geom_point()
    # 调用position_jitter()函数给数据点增加随机扰动,通过width,height参数调节
    sp1 + geom_point(position="jitter")
    # 也可以调用 geom_jitter()
    sp1 + geom_point(position=position_jitter(width=.5, height=0))
    
    image-20210817175225507
    # 箱线图
    sp1 + geom_boxplot(aes(group=Time))
    
    unnamed-chunk-511

    参考书籍

    • R Graphics Cookbook, 2nd edition.

    相关文章

      网友评论

          本文标题:R绘图基础指南 | 3. 散点图(一)

          本文链接:https://www.haomeiwen.com/subject/vlhgbltx.html