ggplot序列模式

时间:2012-07-13 18:17:54

标签: r colorbar ggplot2

我试图绘制一系列代表不同类型活动的彩色小方块。例如,在以下数据框中,type表示活动的类型和 count表示在发生“不同类型”活动之前发生的活动中有多少。

df3 <- data.frame(type=c(1,6,4,6,1,4,1,4,1,1,1,1,6,6,1,1,3,1,4,1,4,6,4,6,4,4,6,4,6,4),
      count=c(6,1,1,1,2,1,6,3,1,6,8,10,3,1,2,2,1,2,1,1,1,1,1,1,3,3,1,17,1,12) )

到目前为止,ggplot我没有使用计数。我只是将连续数字作为xvalues,将1作为yvalues。但它给了我ggplot Image之类的东西 这是我使用的代码,请注意,对于y我总是使用1而对于x我只使用连续的数字:

 ggplot(df3,aes(x=1:nrow(df3),y=rep(1,30))) + geom_bar(stat="identity",aes(color=as.factor(type)))

我想得到宽度= df3 $ count的小方块。

你有什么建议吗?提前致谢

1 个答案:

答案 0 :(得分:2)

我并不完全清楚你需要什么,但我提供了一种绘制数据的方法。我使用geom_rect()绘制宽度等于count列的矩形。矩形的绘制顺序与数据行的顺序相同。

df3 <- data.frame(type=c(1,6,4,6,1,4,1,4,1,1,1,1,6,6,1,
                         1,3,1,4,1,4,6,4,6,4,4,6,4,6,4),
                 count=c(6,1,1,1,2,1,6,3,1,6,8,10,3,1,2,
                         2,1,2,1,1,1,1,1,1,3,3,1,17,1,12))

library(ggplot2)

df3$type <- factor(df3$type)
df3$ymin <- 0
df3$ymax <- 1
df3$xmax <- cumsum(df3$count)
df3$xmin <- c(0, head(df3$xmax, n=-1))

plot_1 <- ggplot(df3, 
              aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, fill=type)) +
          geom_rect(colour="grey40", size=0.5)

png("plot_1.png", height=200, width=800)
print(plot_1)
dev.off()

enter image description here