2016-04-05 3 views
0

Я хотел бы наложить три щита.Как накладывать стрижки в ggplot2

Участок 1:

Plot 1

Участок 2:

Plot 2

Участок 3:

Plot 3

fzg <- structure(list(start = c(40L, 22L, 37L, 32L, 72L, 41L, 2L, 11L, 57L, 10L, 102L, 40L, 17L, 48L, 86L, 46L, 49L, 7L, 1L, 2L, 13L, 69L, 42L, 31L, 39L, 64L, 39L, 29L, 67L, 5L, 1L, 54L, 32L, 7L, 4L, 67L, 14L, 26L, 20L, 42L, 26L, 57L, 0L, 34L, 114L), period = 1:45,  zug = c(FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,  TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE,  FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE,  FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,  TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,  TRUE), typ = c(2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L,  2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L,  2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,  1L, 2L, 2L, 1L), dyn1 = c(0L, 0L, 0L, 0L, 203L, 0L, 0L, 0L,  111L, 0L, 112L, 0L, 0L, 0L, 191L, 0L, 95L, 0L, 0L, 0L, 0L,  92L, 0L, 0L, 0L, 176L, 0L, 0L, 135L, 0L, 0L, 60L, 0L, 0L,  0L, 110L, 0L, 0L, 0L, 0L, 0L, 185L, 0L, 0L, 148L), dyn2 = c(0L,  0L, 0L, 0L, 203L, 0L, 0L, 0L, 0L, 0L, 223L, 0L, 0L, 0L, 0L,  0L, 286L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 268L, 0L, 0L, 0L,  0L, 0L, 0L, 0L, 0L, 0L, 305L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,  0L, 333L)), .Names = c("start", "period", "zug", "typ", "dyn1", "dyn2"), row.names = c(NA, -45L), class = "data.frame") 

x_scale_max <- max(fzg$start, fzg$dyn1, fzg$dyn2) 

ggplot(fzg, aes(x=period, y=start, fill=typ)) + geom_bar(stat="identity", position="dodge") + ylim(0,x_scale_max) 
ggplot(fzg, aes(x=period, y=dyn1, fill=typ)) + geom_bar(stat="identity", position="dodge") + ylim(0,x_scale_max) 
ggplot(fzg, aes(x=period, y=dyn2, fill=typ)) + geom_bar(stat="identity", position="dodge")+ ylim(0,x_scale_max) 

Полученный barplot должен

  • показать все небольшие полосы из участка 1 в цвете 0
  • показать все выделенные полосы из участка 1 в цвете 1
  • показать добавленные части от участка 2 в цвете 2
  • показать дополнительные части из графика 3 в цвете 3

мне удалось получить все в одном участке

library(reshape2) 
mdat <- melt(fzg[c("start", "period", "dyn1", "dyn2")], measured=c("start","dyn1","dyn2"), id="period") 
ggplot(mdat, aes(x=period, y=value, fill=variable)) + geom_bar(stat="identity", position="stack") + ylim(0,x_scale_max) 

Но цвет подсветки различных этапов не работает.

+1

Вы можете проверить [здесь] (http://stackoverflow.com/questions/8134605/how-to-overlay -two-geom-bar) – akrun

+0

, так что необходимо разделить data.frame на столько кадров данных, сколько хотите графиков? Или есть решение для одного data.frame? (Я думаю, я могу просто скопировать и создать несколько data.frames, это просто не кажется мне очень изящным, учитывая, что ggplot обычно отлично с одним data.frame) – mondano

ответ

1

Если вы ищете для этого plot
Просто измените код:

mdat <- melt(fzg[c("start", "period", "dyn1", "dyn2", "typ")], measured=c("start","dyn1","dyn2"), id=c("period", "typ")) 
mdat <- mdat[mdat$value != 0,] 
ggplot(mdat, aes(x=period, y=value, fill=interaction(variable,typ))) + geom_bar(stat = "identity") 
Смежные вопросы