【发布时间】:2017-03-21 10:14:33
【问题描述】:
我正在尝试将数据(见下文)绘制为分组条形图。我已按照此处的其他建议将position = "" 更改为geom_bar,但我似乎无法使其工作。我所得到的只是一个堆积的条形图。这是我最近的尝试:
ggplot(data = IFNg, aes(x = IFNg$Location, y = IFNg$`Fold Change`)) +
geom_bar(position = 'identity', stat = "identity", fill = IFNg$Day) +
ylab("Fold Change (log_2)") + geom_errorbar(limits, width=0.15)
我也尝试了以下方法,这也导致了堆叠图,但这个颜色不同:
ggplot(data = IFNg, aes(x = IFNg$Location, y = IFNg$`Fold Change`,
fill= IFNg$Day)) + geom_bar(position = 'identity', stat = "identity") +
ylab("Fold Change (log_2)") + geom_errorbar(limits, width=0.15)
这是我的其余代码与数据:
dat <- structure(list(Day = c(1L, 3L, 7L, 21L, 1L, 3L, 7L, 21L, 1L,
3L, 7L, 21L), Order = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L), Target = c("IFN-g", "IFN-g", "IFN-g", "IFN-g", "IFN-g",
"IFN-g", "IFN-g", "IFN-g", "IFN-g", "IFN-g", "IFN-g", "IFN-g"),
Location = c("Duodenum", "Duodenum", "Duodenum", "Duodenum",
"Duodenum (Lymph)", "Duodenum (Lymph)", "Duodenum (Lymph)",
"Duodenum (Lymph)", "Proximal Jejunum", "Proximal Jejunum",
"Proximal Jejunum", "Proximal Jejunum"), `Fold Change` = c(-1.750896098,
-2.194886907, -0.838822724, 0.680612172, -0.375563984, 0.650154987,
0.844897327, -0.228441603, -1.298230671, -1.173634963, -1.877736135,
0.787322978), StDev = c(0.027477611, 0.029974897, 0.19025044, 1.235986647,
0.055798435, 0.086102327, 0.115422155, 0.34470734, 0.020947691, 0.165294027,
0.040111751, 0.035010207)), .Names = c("Day", "Order", "Target", "Location",
"Fold Change", "StDev"), class = c("tbl_df", "data.frame"), row.names = c(NA,-12L))
IFNg <- dat[dat$Target == 'IFN-g', ]
limits <- aes(ymax = IFNg$`Fold Change` + IFNg$StDev,
ymin = IFNg$`Fold Change` - IFNg$StDev)
【问题讨论】:
-
永远不要在
aes()中使用$。您有data参数来告诉ggplot要使用的数据框。将向量x = data$column而不是列名x = column传递给aes可能会导致问题。同样,(但从另一方面),美学到数据列的所有映射都需要在aes()内,包括fill = Day。 -
谢谢@Gregor。我已经完成了两个建议的更改,但情节仍然堆积如山。不知道发生了什么...
-
你的情节在技术上没有叠加。它只是将所有条形图放置在一个点上,因此您可以看到“较短”条形图后面的“较高”条形图。你希望你的图形看起来像什么?你想要一个躲避的条形图吗?如果是这样,请使用
position = "dodge"。 -
感谢@aosmith 的建议。不幸的是,
position = "dodge"导致我的情节没有变化。不知道为什么。 -
可能是因为
Day不是一个因素。在aes中使用fill = factor(Day)。