首页 > 解决方案 > 根据列中的值绘制多个图

问题描述

我有一个由中位数、1 和 3 个百分位数、ID 和组组成的数据框。这是一些测试数据,但实际数据包含超过 500 行。

data <- data.frame( "County" = c(1,1,2,2,3,3), "Median" = c(5,7,8,2,4,5), "Low" = c(0.5,2,4,1,2,3), "High" = c(10,12,11,9,10,15), "ID" = c("TRUE", "TRUE", "FALSE", "TRUE", "FALSE", "FALSE"), "group" = c(1,1,2,2,3,3))

我将始终拥有“县”的副本,并且在我的情节中,我想在彼此的顶部显示两个 geom_crossbars(显示 ID = TRUE/FALSE),请参见图。但现在我只想绘制组 = 1 等包含的数据。最后,我想在一个方面方案上为每个组绘制一个图。

到目前为止,这是我的 ggplot:

ggplot(data, aes(x = as.factor(County), 
                y = Median, 
                ymin = Low, 
                ymax = High)) +
  geom_crossbar(aes(color = ID, fill = ID, alpha = 1)) +
  scale_fill_manual(values = c("gray79", "brown4")) +
  scale_color_manual(values = c("gray50", "brown4")) +
  theme_classic() +
  scale_alpha(guide = "none") +
  xlab("County") +
  ylab("Variance") +
  labs(fill = "Model") +
  labs(color = "Model") 

在此处输入图像描述

我不确定如何仅绘制特定参数中包含的数据。有没有其他人经历过这个?

标签: rggplot2plotfacet

解决方案


您可以将facet_wrap/添加facet_grid到您的代码中。

library(ggplot2)

ggplot(data, aes(x = as.factor(County), 
                 y = Median, 
                 ymin = Low, 
                 ymax = High)) +
  geom_crossbar(aes(color = ID, fill = ID, alpha = 1)) +
  scale_fill_manual(values = c("gray79", "brown4")) +
  scale_color_manual(values = c("gray50", "brown4")) +
  theme_classic() +
  scale_alpha(guide = "none") +
  xlab("County") +
  ylab("Variance") +
  labs(fill = "Model") +
  labs(color = "Model")  +
  facet_wrap(~group, scales = 'free')

在此处输入图像描述


推荐阅读