r - facet_wrap 和缩放点大小

标签 r ggplot2 facet-wrap

简而言之: 我想为使用 facet_wrap 制作的双面板图的每个“面板”设置单独的图例。使用 facet_wrap(scales="free") 在我想要不同的轴比例时效果很好,但不适用于点的大小。

背景: 我有几个样本的数据,每个样本具有三个测量值:xyz。每个样本来自第 1 类或第 2 类。xy 在每个类中具有相同的分布。但是,第 1 类的所有 z 测量值都小于 1.0; 2 类的 z 测量值范围为 0 到 100。

我被困在哪里: 分别在 x 和 y 轴上绘制 xy。使每个点的面积与其 z 值成正比。

d = matrix(c(runif(100),runif(20)*100),ncol=3)
e = data.frame( gl(2,20), d )
colnames(e) = c("class","x","y","z")
ggplot( data = e, aes(x=x, y=y, size=z) ) + 
  geom_point() + scale_area() +
  facet_wrap( ~ class, ncol=1, scales="free" )

enter image description here

问题: 请注意,第一个面板上的点很难看到,因为它们位于用于单个图例的范围从 0 到 100 的刻度的非常低端。是否有可能有两个单独的图例(每个图例都有不同的范围) 或者我应该制作两个图并将它们与视口(viewport)结合起来吗?

最佳答案

使用 grid.arrange 的解决方案。我已经离开了对 facet_wrap 的调用,所以 strip.text 仍然存在。您可以轻松删除它。

# plot for class 1
c1 <- ggplot(e[e$class==1,], aes(x=x,y=y,size=z)) + geom_point() + scale_area() + facet_wrap(~class)
# plot for class 2
c2 <- c1 %+% e[e$class==2,]

library(gridExtra)

grid.arrange(c1,c2, ncol=1)

enter image description here

关于r - facet_wrap 和缩放点大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13594814/

相关文章:

R - 计算自具有多个事件类型和 ID 的上次事件以来耗时

r - 如何在 R 中计算属于同一数据帧中处理组合的列中的记录数(即行、单元格)?

r - ggplot : extract selected subplots from faceted plot

r - 在 ggplot2 中设置切面的绝对大小

R:如何根据最近的 N 行值生成具有行值的列

r - 导入 .xlsx 文件后,从矩阵列表构建适当的数据框

r - 使用因子将 ggplot 中的标签拆分为 2 行

r - 将 SpatVector 对象转换为数据框以在 ggplot2 中使用

r - ggplot2 中具有等面积箱的直方图

python - 将多个绘图包装在一个图像中