шаблоны последовательности ggplot

Я пытаюсь построить последовательность цветных маленьких квадратов, представляющих разные виды деятельности. Например, в следующем фрейме данных 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. Я просто даю последовательные числа как значения x и 1 как значения y. Однако это дает мне что-то вроде 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.

У Вас есть какие-то предложения? заранее спасибо


person DJMJ    schedule 13.07.2012    source источник


Ответы (1)


Я не совсем понимаю, что вам нужно, но я предлагаю один из возможных способов построения ваших данных. Я использовал 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()

введите здесь описание изображения

person bdemarest    schedule 13.07.2012
comment
Спасибо! Это очень полезно! - person DJMJ; 16.07.2012