我可以自由设置秤比x和y其它美学(例如尺寸)使用facet_grid时?

问题描述 投票:3回答:1

facet_grid和facet_wrap有鳞参数,其据我知道允许被绘制每个小区来调整x和/或y轴的数据的规模。因为根据ggplot x和y的语法有很多美学之中只有两个,并有一个规模为每个审美,我想这将是合理的做法是让每个审美自由的选择权,但到目前为止,我没有发现一个办法做到这一点。

我试图将其设置在特定的大小,因为有时一个变量生活在一个不同的顺序根据我使用了小群的大小,并且具有相同规模的每一组块眼看期限内向可能性基变异。

重复的例子:

set.seed(1)
x <- runif(20,0,1)
y <- runif(20,0,1)
groups <- c(rep('small', 10), rep('big', 10))
size_small <- runif(10,0,1)
size_big   <- runif(10,0,1) * 1000

df <- data.frame(x, y, groups, sizes = c(size_small, size_big))

而对于绘图辅助功能:

basic_plot <- function(df) ggplot(df) + 
  geom_point(aes(x, y, size = sizes, color = groups)) + 
  scale_color_manual(values = c('big' = 'red', 'small' = 'blue')) +
  coord_cartesian(xlim=c(0,1), ylim=c(0,1))

如果我我们绘制的数据是,我们得到如下:

basic_plot(df)

Non faceted plot

蓝点都比较小,但我们没有什么可以做的。如果再加上小:

basic_plot(df) +
  facet_grid(~groups, scales = 'free')

Faceted plot

蓝点继续成为小。不过,我想利用我正在将数据在两个事实的优点,并允许大小规模调整到每个小区的数据。我想有像下面这样:

plot_big <- basic_plot(df[df$groups == 'big',])
plot_small <- basic_plot(df[df$groups == 'small',])

grid.arrange(plot_big, plot_small, ncol = 2)

What I want

是否可以不诉诸这种微观的,或大小类似下面的手动缩放做了什么?

df %>% 
  group_by(groups) %>% 
  mutate(maximo = max(sizes),
         sizes = scale(sizes, center = F)) %>% 
  basic_plot() +
  facet_grid(~groups)

我可以设法做这些事情,我只是想看看我绝不错过另一个选项,或者如果我误解显卡的语法。

感谢您的时间!

r ggplot2 facet-wrap facet-grid
1个回答
2
投票

如前所述,原创情节美学保持通话facet_wrap时。由于需要分组图表,考虑base::by(该子集数据帧功能)包裹在do.call

do.call(grid.arrange, 
        args=list(grobs=by(df, df$groups, basic_plot), 
                  ncol=2,
                  top="Grouped Point Plots"))

Grouped Plot Output


如果您需要共享一个传奇,我一直使用从@Steven Lockton's answer这个包装

do.call(grid_arrange_shared_legend, by(df, df$groups, basic_plot))

Shared Legend Plot Output

© www.soinside.com 2019 - 2024. All rights reserved.