首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更清晰地绘制不同结果变量(R)的多个条形图

更清晰地绘制不同结果变量(R)的多个条形图
EN

Stack Overflow用户
提问于 2018-09-04 04:44:42
回答 3查看 568关注 0票数 1

我想知道是否有更好的方法来生成网格中排列的不同结果变量的4个条形图:

这是我使用的代码:

代码语言:javascript
复制
library(cowplot)

bar1 <- ggplot(data = subset(data, !is.na(MHQ_Heading_Male_Quartile))) +
  geom_bar(mapping = aes(x = MHQ_Heading_Male_Quartile))
bar2 <- ggplot(data = subset(data, !is.na(AHQ_Heading_Male_Quartile))) +
  geom_bar(mapping = aes(x = AHQ_Heading_Male_Quartile))
bar3 <- ggplot(data = subset(data, !is.na(MHQ_Heading_Female_Quartile))) +
  geom_bar(mapping = aes(x = MHQ_Heading_Female_Quartile))
bar4 <- ggplot(data = subset(data, !is.na(AHQ_Heading_Female_Quartile))) +
  geom_bar(mapping = aes(x = AHQ_Heading_Female_Quartile))

plot_grid(bar1, bar2, bar3, bar4, ncol = 2)

然而,有很多重复的代码-有什么函数或方法可以用更少的行创建与ggplot2相同的绘图吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-04 05:59:29

我将相关的列从宽转换为长(以"_Quartile"结尾的列),然后使用facet_wrapscales = "free"的2x2网格中显示4个图。

如下所示:

代码语言:javascript
复制
data %>%
    gather(key, value, ends_with("Quartile")) %>%
    filter(!is.na(value)) %>%
    ggplot(aes(value)) +
    geom_bar() +
    facet_wrap(~ key, scales = "free", ncol = 2, nrow = 2)

票数 3
EN

Stack Overflow用户

发布于 2018-09-04 06:01:24

如前所述,您需要使用dplyr gather (或重塑包)将其设置为较长的格式,然后对其进行刻面处理。

代码语言:javascript
复制
`data %>%
  select( MHQ_Heading_Male_Quartile, AHQ_Heading_Male_Quartile, MHQ_Heading_Female_Quartile, AHQ_Heading_Female_Quartile) %>%
  gather("Type", "Range", MHQ_Heading_Male_Quartile:AHQ_Heading_Female_Quartile) %>%
  filter(!is.na(Range)) %>%
  ggplot(aes(x=Range)) + 
  geom_bar() + 
  facet_wrap(~Type, scales="free")`

我将把清理图表的工作留给您,但这是基本前提。

票数 1
EN

Stack Overflow用户

发布于 2018-09-04 06:29:44

将要显示的列名提取到nms中,然后为每个列名使用qplot创建一个ggplot对象,以便bars是此类对象的列表。然后在上面运行plot_grid

代码语言:javascript
复制
nms <- grep("Quartile", names(data), value = TRUE)
bars <- lapply(nms, function(nm) qplot(na.omit(data[[nm]]), xlab = nm))
do.call("plot_grid", bars)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52156028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档