【发布时间】:2019-09-07 22:54:28
【问题描述】:
创建大型嵌套列表以跟踪使用ggplot2 创建的图通常很方便。
例如,以下是我如何将少量图存储在一个大图列表中的方法,其中包含主题和子主题的子列表。
summary_plots
-
$DemographicsDemographics$Socioeconomic$Household_Income_PlotDemographics$Socioeconomic$Education_PlotDemographics$Age_Plot
-
$Product_UsagePurchase_Frequency_Plot- ....
如何从整个列表中提取所有 ggplot2 绘图对象?我希望能够创建一个“平面”的单级列表,其中包含原始列表中包含的所有图。
这是一个简单的示例列表:
generic_plot <- ggplot(mtcars) + geom_point(aes(x = wt, y = mpg))
summary_plots <- list()
summary_plots$Demographics$Socioeconomic$Income <- generic_plot
summary_plots$Demographics$Socioeconomic$Education <- generic_plot
summary_plots$Demographics$Age <- generic_plot
summary_plots$Product_Usage$Purchase_Frequency <- generic_plot
所需的结果相当于创建如下列表:
list('Demographics.Socioeconomic.Income' = generic_plot,
'Demographics.Socioeconomic.Education' = generic_plot,
...)
【问题讨论】:
-
我不认为这是特定于
ggplot对象的列表,我认为这只是扁平化嵌套列表的问题,例如这里:stackoverflow.com/q/48443179/5325862 -
感谢您分享该帖子。这里的问题是
ggplot2对象本身就是列表(is.list(generic_plot) is TRUE),因此在不取消列出或展平ggplot2对象本身的情况下提取它们可能会很棘手。而且我认为ggplot2对象是如此常见的用例,我认为将其作为自己的问题并不过分。 -
是的,它们是列表使得简单的
unlist调用不起作用。 -
由于 ggplot 对象具有类“ggplot”,因此这里可行的方法可能是递归遍历列表的级别,提取类等于“ggplot”的每个对象,并将结果作为ggplot 对象的扁平化列表。