R ggplot2:面:不同的轴限制和自由空间

R ggplot2:面:不同的轴限制和自由空间,r,ggplot2,R,Ggplot2,我想在数据中显示两个维度,(1)不同方面的报告实体,(2)与x轴上的数据点关联的国家。问题是国家维度包含一个“总计”,它比所有单个值都高,因此我需要一个自己的轴限制 我的解决方案是尝试另一个facetting维度,但我无法让它同时工作并看起来很好。考虑下面的哑数据: id <- c(1,1,1,1,1,1,2,2,2,2,2,2) country <- c("US","US","UK","World","World","World","US","US","UK","World","W

我想在数据中显示两个维度,(1)不同方面的报告实体,(2)与x轴上的数据点关联的国家。问题是国家维度包含一个“总计”,它比所有单个值都高,因此我需要一个自己的轴限制

我的解决方案是尝试另一个facetting维度,但我无法让它同时工作并看起来很好。考虑下面的哑数据:

id <- c(1,1,1,1,1,1,2,2,2,2,2,2)
country <- c("US","US","UK","World","World","World","US","US","UK","World","World","World")
value <- c(150,40,100,1000,1100,1500,5,10,20,150,200,120)
# + some other dimensions
mydat <- data.frame(id,country,value)

   id country value
1   1      US   150
2   1      US    40
3   1      UK   100
4   1   World  1000
5   1   World  1100
6   1   World  1500
7   2      US     5
8   2      US    10
9   2      UK    20
10  2   World   150
11  2   World   200
12  2   World   120

这里有几个线索提出了类似的问题,但没有一个答案能帮助我实现这一点


可以尝试
gridExtra::grid.arrange
cowplot::plot\u grid

lst <- split(mydat, list(mydat$breakdown, mydat$id))
plots <- lapply(seq(lst), function(x) {ggplot(lst[[x]]) + 
    aes(x=country,y=value) + 
    geom_point() + 
    ggtitle(names(lst)[x]) + labs(x=NULL, y=NULL)
})
do.call(gridExtra::grid.arrange, 
        c(plots, list(ncol=2, widths=c(2/3, 1/3)), 
          left="Value", bottom="country"))

lst太好了,谢谢!!只需添加几项功能,它就非常棒:(1)删除前缀:
names(lst)您可能也想签出
cowplot::plot\u grid
,这允许您对齐轴:
ggplot(mydat) + aes(x=country,y=value) + geom_point() + 
  facet_wrap(id ~ breakdown,scales = "free")
lst <- split(mydat, list(mydat$breakdown, mydat$id))
plots <- lapply(seq(lst), function(x) {ggplot(lst[[x]]) + 
    aes(x=country,y=value) + 
    geom_point() + 
    ggtitle(names(lst)[x]) + labs(x=NULL, y=NULL)
})
do.call(gridExtra::grid.arrange, 
        c(plots, list(ncol=2, widths=c(2/3, 1/3)), 
          left="Value", bottom="country"))