ggplot2 3.3.0版本更新内容

2020-04-01 16:28:08 浏览数 (1)

1. 坐标轴

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

代码语言:javascript复制
library(ggplot2)
p <- ggplot(mpg)    
      geom_bar(aes(x = manufacturer),fill = '#8FBC8F')    
      theme(axis.text.x = element_text(size = 11))
p

image

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

代码语言:javascript复制
p    scale_x_discrete(guide = guide_axis(n.dodge = 2))

image

也可以移除重叠的labels:

image

2. bin scale

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

代码语言:javascript复制
p <- ggplot(mpg)    
      geom_point(aes(displ, cty, size = hwy, colour = hwy))p    
      scale_size_binned()

image

代码语言:javascript复制
p    scale_colour_binned()

image

将data放到对应的bin中间:

代码语言:javascript复制
p    scale_x_binned()

image

3. 方向

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

代码语言:javascript复制
ggplot(mpg)    geom_bar(aes(x = manufacturer))    coord_flip()

image

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

代码语言:javascript复制
ggplot(mpg)    geom_bar(aes(y = manufacturer))

image

拟合曲线也可改变方向:

代码语言:javascript复制
ggplot(mpg, aes(displ, hwy))    
geom_point()    geom_smooth(orientation = "y")

image

4. aesthetic

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

代码语言:javascript复制
ggplot(mpg, aes(x = displ, y = ..density..))    geom_histogram()

image

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

代码语言:javascript复制
ggplot(mpg, aes(x =displ))    
geom_histogram(aes(y = after_stat(density)))

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

代码语言:javascript复制
ggplot(mpg, aes(class, hwy))    
geom_boxplot(aes(colour = class, fill = after_scale(alpha(colour, 0.4))))

image

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

代码语言:javascript复制
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/ 中的内容。

欢迎关注公众号!

生信编程日常

0 人点赞