【r<-方案|转载】ggplot坐标轴截断

ggplot本身没有坐标轴截断的功能,所以一些文献中通过软件实现的截断图用ggplot难以实现,标准的方案是使用分面达到类似的效果。本文摘自Y叔《不一样的分面》


set.seed(2019-01-19)
d <- data.frame(
    x = 1:20, 
    y = c(rnorm(5) + 4, rnorm(5) + 20, rnorm(5) + 5, rnorm(5) + 22)
)

ggplot(d, aes(x, y)) + geom_col()
library(dplyr)

breaks = c(7, 17)
d$.type <- NA
d$.type[d$y < breaks[1]] = "small"
d$.type[d$y > breaks[2]] = "big"

d <- filter(d, .type == 'big') %>% 
    mutate(.type = "small", y = breaks[1]) %>% 
    bind_rows(d)

mymin = function(y) ifelse(y <= breaks[1], 0, breaks[2])               
p <- ggplot(d, aes(x, y)) + 
    geom_rect(aes(xmin = x - .4, xmax = x + .4, ymin = mymin(y), ymax = y)) +
    facet_grid(.type ~ ., scales = "free") + 
    theme(strip.text=element_blank())
p
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容