美文网首页
3. 关于ggplot绘图公式复盘的一些问题2

3. 关于ggplot绘图公式复盘的一些问题2

作者: 心惊梦醒 | 来源:发表于2022-08-31 18:47 被阅读0次

      ggplot提供的几种重要几何图形函数geom_*如下:

    • geom_smooth对数据进行拟合并展示拟合的结果和标准误;这个函数的重要参数是method。当method=NULL时,基于observations的数量(数据点的个数)选择默认方法:当observations的数量小于1000时,默认geom_smooth(method="loess");否则默认geom_smooth(method="gam",formula=y ~ s(x, bs = "cs"))(ps:也可以写作geom_smooth(method="gam",formula = y ~ s(x))).geom_smooth(method = "lm")拟合线性模型;geom_smooth(method = "rlm")lm相似,但使用更稳健的拟合算法,因此异常值不会对拟合产生太大的影响。
    • geom_boxplot()绘制箱线图汇总点集的分布,适合绘制连续型变量在离散型变量上的分布。当仅用geom_point()时,可能很多点画在了相同的位置进而影响对信息的判断,有三种方法来缓解这个问题:1)geom_jitter()给数据加一个小的随机噪声将点抖动开,适合小数据集;2)geom_boxplot()用少量的统计数据汇总了分布的形状,即上限(上四分位数+1.5IQR)、上四分位数、中位数、下四分位数、下限(下四分位数-1.5IQR)、异常点(超过上限或低于下限的点),但只用五个数字就表示了一组数据的分布有时候显得信息不足;3)geom_violin()展示分布密度,突出发现最多点的区域,但依赖于密度估计的计算,有时候会很难解释。
    • geom_histogram()geom_freqpoly()展示单个连续数值变量的分布。与boxplot相比,提供了更多关于单个Group的分布信息,代价是需要更多的空间。两者的工作方式相同:先对数据划分bin,再计算每个bin中observations的数量,然后以bin为横坐标,计算的每个bin中的observations的数量为纵坐标绘制图形。两者唯一的差别是:展示方式不同:histogram用bars,freqpoly用lines。分bin的方式有两种:一种是用binwidth参数生成均匀间隔的bin,另一种是用breaks参数生成不均匀间隔的bin。当你困扰于总要尝试不同的值才能使自己的图形传达出想要的信息时,请记住这是正常且非常重要的,你必须这样做。替代geom_freqpoly()的另一个方式是geom_density(),但底层密度计算是复杂的,从而导致有时结果很难解释,它们总是假设数据是连续的、无界的、平滑的。
      这两个函数是针对单个连续数值变量进行统计,但仍然可以比较不同的subgroup,举例:ggplot(diamonds, aes(price, fill = cut)) + geom_histogram(binwidth = 500)ggplot(diamonds, aes(price, colour = cut)) + geom_freqpoly(binwidth = 500),即histogram设置aes的fill参数,freqpoly设置aes的color参数。另一种可选方案当然是分面啦。
    • geom_bar()展示离散型变量的分布geom_histogram是直方图,geom_bar()是柱状图,后者是前者的离散模拟,可以理解为后者是从前者“分bin”后开始计算绘图的。这里的离散型变量分两种情况:1)诸如ggplot(mpg, aes(manufacturer))+geom_bar()(等价于ggplot(mpg, aes(manufacturer))+geom_bar(stat="count"))中,manufacturer是一组离散型字符串,geom_bar()会先统计每个唯一值的数量然后绘图;2)如ggplot(drugs, aes(drug, effect)) + geom_bar(stat = "identity")中,drugs是
    drugs <- data.frame(
      drug = c("a", "b", "c"),
      effect = c(4.2, 9.7, 6.1)
    )
    

    相信你已看到区别。总结下来就是:如果原始值是未经过统计的,设置stat="count",这样函数会自动计算并绘图;如果原始值是已经统计好的,设置stat="identity"直接绘图。

    • geom_histogram()默认stat="bin",即对连续型变量先分bin,再计算每个bin中的count;geom_bar()默认stat="count",即对离散型变量直接count;geom_bar(stat="identity")适用于你实现做好了count,直接绘图即可。
    • 一般情况下,geom_histogram()出的图柱子之间是紧挨着的,如果想分离,可结合scale_binned()函数设置,geom_histogram()函数的帮助文档中有示例。
    • geom_freqpoly()geom_line()的关系和geom_hisogram()geom_bar()的关系很类似。

    相关文章

      网友评论

          本文标题:3. 关于ggplot绘图公式复盘的一些问题2

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