R:连续x轴上的条形图(时标)

时间:2013-07-11 16:27:13

标签: r ggplot2 bar-chart

我对R很新,所以请评论你看到的任何内容。

我在两个条件下(对于一个timpoint)在不同时间点拍摄数据,并且我想将其绘制为带有错误栏的条形图以及在适当时间点的条形图。

我目前有这个(从本网站上的另一个问题中被盗):

library(ggplot2)
example <- data.frame(tp = factor(c(0, "14a", "14b", 24, 48, 72)), means  = c(1, 2.1, 1.9, 1.8, 1.7, 1.2), std = c(0.3, 0.4, 0.2, 0.6, 0.2, 0.3))
ggplot(example, aes(x = tp, y = means)) +  
  geom_bar(position = position_dodge()) + 
  geom_errorbar(aes(ymin=means-std, ymax=means+std))

现在我的时间点是一个因素,但是随着时间的推移测量分布不均匀这一事实使得情节不太好。!

这就是我想象的方式:

enter image description here

我发现ggplot2包可以为你提供非常好的图表,但我理解它的难度远远超过其他R的东西。

1 个答案:

答案 0 :(得分:2)

在我们进入R之前,你必须意识到即使在条形图中,x轴也需要一个数值。如果将它们视为因子,则默认情况下软件假定条之间的间距相等。在这种情况下,每个条形的x值是多少?它可以是(0,14,14,24,48,72)但是它会在第14点绘制两个你似乎不想要的条形图。所以你必须提出x值。

Joran通过修改位置14处的条形宽度提供了一个优雅的解决方案。修改joran给出的代码以使条形位于x轴的正确位置,最终的解决方案是:

library(ggplot2)
example <- data.frame(tp = factor(c(0, "14a", "14b", 24, 48, 72)), means  = c(1, 2.1, 1.9, 1.8, 1.7, 1.2), std = c(0.3, 0.4, 0.2, 0.6, 0.2, 0.3))

example$tp1 <- gsub("a|b","",example$tp)
example$grp <- c('a','a','b','a','a','a')
example$tp2 <- as.numeric(example$tp1)

ggplot(example, aes(x = tp2, y = means,fill = grp)) +  
  geom_bar(position = "dodge",stat = "identity") + 
  geom_errorbar(aes(ymin=means-std, ymax=means+std),position = "dodge")

enter image description here