ggplot:从多面图中提取选定的子图
ggplot: extract selected subplots from faceted plot
我有以下数据和从中生成的多面图。
# Data generation
dataPlot <- mtcars %>% select(mpg, wt, carb) %>%
group_by(carb) %>% mutate(N = n()) %>% data.frame()
# Original Faceted plot
g1 <- ggplot(dataPlot, aes(mpg, wt)) + geom_point() +
facet_wrap(~carb) + ggtitle("Original plot")
我想从上面的情节中提取下面的情节。为了比较,我是从数据本身生成的。
# Refined plot with minimum 4 points
g2 <- ggplot(dataPlot %>% filter(N > 3), aes(mpg, wt)) + geom_point() +
facet_wrap(~carb) + ggtitle("Refined plot")
# Plots together
grid.arrange(g1, g2, ncol=2)
如何仅使用 g1
中的内容从图 g1
中提取图 g2
,而不是从数据中再次生成它?
如果您查看 str(g1)
,它是一个列表,其中包含有关绘制内容的大量信息。第一个元素是 data
,您可以覆盖它,有效地将 g1
更改为 g2
:
library(tidyverse)
g1 <- ggplot(mtcars, aes(mpg, wt)) +
geom_point() +
facet_wrap(~ carb) +
ggtitle("Original plot")
g1$data <- g1$data %>% group_by(carb) %>% filter(n() > 3)
g1
也就是说,重新绘图通常比直接修改 ggplot 对象内部更简单。
我有以下数据和从中生成的多面图。
# Data generation
dataPlot <- mtcars %>% select(mpg, wt, carb) %>%
group_by(carb) %>% mutate(N = n()) %>% data.frame()
# Original Faceted plot
g1 <- ggplot(dataPlot, aes(mpg, wt)) + geom_point() +
facet_wrap(~carb) + ggtitle("Original plot")
我想从上面的情节中提取下面的情节。为了比较,我是从数据本身生成的。
# Refined plot with minimum 4 points
g2 <- ggplot(dataPlot %>% filter(N > 3), aes(mpg, wt)) + geom_point() +
facet_wrap(~carb) + ggtitle("Refined plot")
# Plots together
grid.arrange(g1, g2, ncol=2)
如何仅使用 g1
中的内容从图 g1
中提取图 g2
,而不是从数据中再次生成它?
如果您查看 str(g1)
,它是一个列表,其中包含有关绘制内容的大量信息。第一个元素是 data
,您可以覆盖它,有效地将 g1
更改为 g2
:
library(tidyverse)
g1 <- ggplot(mtcars, aes(mpg, wt)) +
geom_point() +
facet_wrap(~ carb) +
ggtitle("Original plot")
g1$data <- g1$data %>% group_by(carb) %>% filter(n() > 3)
g1
也就是说,重新绘图通常比直接修改 ggplot 对象内部更简单。