如何在 r 中使用 ggplot 区分 x 轴上的样本
How to differentiate samples on the x axis using ggplot in r
我使用 ggplot 创建了一个 geom_bar 图,它在 x 轴上有 14 个单独的样本。这些样本属于不同的组,我希望在图中添加一个元素来指示哪些样本属于每个组。
例如在这个输出图中,样本HH11-HH21属于一组,HH21-35属于另一组,其余属于另一组。
是否可以在图的顶部添加一个彩色条,指示样本属于哪个组?
这是我用来生成这张图的代码:
ggplot(full_table_top30, aes(x = variable, y = value, fill = Genus)) +
geom_bar(position = "fill", stat = "identity") +
scale_fill_manual(breaks = Genus2, values = Cb64k) +
scale_y_continuous(labels = percent_format()) +
theme(legend.position = "right", text=element_text(size=12),
axis.text.x = element_text(angle=90, vjust=1)) +
guides(fill = guide_legend(ncol=2)) +
ggtitle(opt$gtitle) +
xlab("Patient ID") + ylab("Relative activity")
我们没有您的数据,但我认为您要找的是 facet_grid()
。如果我们构建一些数据:
df <- tibble(class = rep(c("H1", "H2",
"H3", "H4"), each = 3),
variable = rep(c("V1","V2",
"V3"), 4),
value = sample(20:50, 12),
group = ifelse(class == "H1" | class == "H2",
"Group 1", "Group 2"))
然后绘制它:
df %>%
ggplot(aes(x = class, y = value, fill = variable)) +
geom_bar(stat = "identity") +
facet_grid(cols = vars(group), scales = "free_x") +
theme(panel.spacing = unit(0, "lines"))
在 facet_grid()
中指定组变量,并使用 "free_x" 以便每个方面仅包含特定组的变量。最后,faceting 在两个图之间添加了 space。您可以通过将面板间距归零来删除它。
您可以使用以下方法更改刻面的颜色:
theme(strip.background=element_rect(fill="#ff0000", color = NA))
附录
mutate(full_table_top30, group = ifelse(variable == "HH11" | variable == "HH12" |
variable == "HH15" | variable == "HH21", "PEDIS2",
ifelse(variable == "HH1" | variable == "HH18" |
variable == "HH20" | variable == "HH24" |
variable == "HH34" | variable == "HH35",
"PEDIS3", "PEDIS4")))
我使用 ggplot 创建了一个 geom_bar 图,它在 x 轴上有 14 个单独的样本。这些样本属于不同的组,我希望在图中添加一个元素来指示哪些样本属于每个组。
例如在这个输出图中,样本HH11-HH21属于一组,HH21-35属于另一组,其余属于另一组。
是否可以在图的顶部添加一个彩色条,指示样本属于哪个组?
这是我用来生成这张图的代码:
ggplot(full_table_top30, aes(x = variable, y = value, fill = Genus)) +
geom_bar(position = "fill", stat = "identity") +
scale_fill_manual(breaks = Genus2, values = Cb64k) +
scale_y_continuous(labels = percent_format()) +
theme(legend.position = "right", text=element_text(size=12),
axis.text.x = element_text(angle=90, vjust=1)) +
guides(fill = guide_legend(ncol=2)) +
ggtitle(opt$gtitle) +
xlab("Patient ID") + ylab("Relative activity")
我们没有您的数据,但我认为您要找的是 facet_grid()
。如果我们构建一些数据:
df <- tibble(class = rep(c("H1", "H2",
"H3", "H4"), each = 3),
variable = rep(c("V1","V2",
"V3"), 4),
value = sample(20:50, 12),
group = ifelse(class == "H1" | class == "H2",
"Group 1", "Group 2"))
然后绘制它:
df %>%
ggplot(aes(x = class, y = value, fill = variable)) +
geom_bar(stat = "identity") +
facet_grid(cols = vars(group), scales = "free_x") +
theme(panel.spacing = unit(0, "lines"))
facet_grid()
中指定组变量,并使用 "free_x" 以便每个方面仅包含特定组的变量。最后,faceting 在两个图之间添加了 space。您可以通过将面板间距归零来删除它。
您可以使用以下方法更改刻面的颜色:
theme(strip.background=element_rect(fill="#ff0000", color = NA))
附录
mutate(full_table_top30, group = ifelse(variable == "HH11" | variable == "HH12" |
variable == "HH15" | variable == "HH21", "PEDIS2",
ifelse(variable == "HH1" | variable == "HH18" |
variable == "HH20" | variable == "HH24" |
variable == "HH34" | variable == "HH35",
"PEDIS3", "PEDIS4")))