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