2

我正在尝试绘制一系列代表不同类型活动的彩色小方块。例如,在下面的数据框中,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中我没有使用count。我只是将连续数字作为 xvalues,将 1 作为 yvalues。但是它给了我类似ggplot Image 这是我使用的代码,请注意,对于 y 我总是使用 1 而对于 xi 只使用连续数字:

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

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

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

4

1 回答 1

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()

在此处输入图像描述

于 2012-07-13T19:50:25.943 回答