ggplot2 3.3.0版本更新内容

作者: 生信编程日常 | 来源:发表于2020-03-08 20:56 被阅读0次

    1. 坐标轴

    在老版本中,坐标轴的刻度间隔比较近,文本较长的情况下,经常会出现重叠的现象:

    library(ggplot2)
    p <- ggplot(mpg) +  
          geom_bar(aes(x = manufacturer),fill = '#8FBC8F') +  
          theme(axis.text.x = element_text(size = 11))
    p
    
    image

    在新版本中可以将相邻的labels错开:

    p +  scale_x_discrete(guide = guide_axis(n.dodge = 2))
    
    image

    也可以移除重叠的labels:

    image

    2. bin scale

    原来ggplot只有两种scale的类型,即continuous和discrete,在新版本中加了一种新的类型,可以将连续型的数据根据bin变成离散型的。如下所示:

    p <- ggplot(mpg) +  
          geom_point(aes(displ, cty, size = hwy, colour = hwy))p +  
          scale_size_binned()
    
    image
    p +  scale_colour_binned()
    
    image

    将data放到对应的bin中间:

    p +  scale_x_binned()
    
    image

    3. 方向

    原来如果想把图形换一个方向的话,可以考虑用coord_flip()来实现,比如:

    ggplot(mpg) +  geom_bar(aes(x = manufacturer)) +  coord_flip()
    
    image

    新版本的ggplot2对此进行了改进,可以支持两个方向了,不需要用coor_flip()即可实现:

    ggplot(mpg) +  geom_bar(aes(y = manufacturer))
    
    image

    拟合曲线也可改变方向:

    ggplot(mpg, aes(displ, hwy)) +  
    geom_point() +  geom_smooth(orientation = "y")
    
    image

    4. aesthetic

    比如我们要做一个柱状图,希望纵坐标是density,需要这么写:

    ggplot(mpg, aes(x = displ, y = ..density..)) +  geom_histogram()
    
    image

    但是新版本可以用after_stat()来实现:

    ggplot(mpg, aes(x =displ)) +  
    geom_histogram(aes(y = after_stat(density)))
    

    也可以直接调整颜色(加了透明度):

    ggplot(mpg, aes(class, hwy)) +  
    geom_boxplot(aes(colour = class, fill = after_scale(alpha(colour, 0.4))))
    
    image

    并且现在可以对于一个aesthetic可以支持多个mapping,用stage即可实现,如下面代码,颜色有两个映射:

    ggplot(mpg) +  
    geom_bar(aes(x = drv, colour = stage(start = drv, after_scale = alpha(colour, 0.5))), fill = NA, size = 4  )
    
    image

    此外还有一点别的内容,可以参考https://www.tidyverse.org/blog/2020/03/ggplot2-3-3-0/ 中的内容。

    欢迎关注公众号!


    生信编程日常

    相关文章

      网友评论

        本文标题:ggplot2 3.3.0版本更新内容

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