带组的R叠置条形图

带组的R叠置条形图,r,ggplot2,bar-chart,R,Ggplot2,Bar Chart,我想创建一个包含组的堆叠条形图,我正在努力解决这个问题: data <- data.frame(timeslot=c("0-1", "1-2", "2-3", "3-4", "4-5", "5-6", "6-7", "7-8", "8-9", "9-10", "10-11", "11-12", "12-13", "13-14", "14-15", "15-16", "16-17", "17-18", "18-19", "19-20", "20-21", "21-22", "22-23",

我想创建一个包含组的堆叠条形图,我正在努力解决这个问题:

data <- data.frame(timeslot=c("0-1", "1-2", "2-3", "3-4", "4-5", "5-6", "6-7", "7-8", "8-9", "9-10", "10-11", "11-12", "12-13", "13-14", "14-15", "15-16", "16-17", "17-18", "18-19", "19-20", "20-21", "21-22", "22-23", "23-0"),
Start1=c(3,0,1,0,0,1,2,22,58,41,30,41,52,52,38,35,20,18,14,19,12,2,9,0),
Start2=c(0,0,0,0,0,0,0,13,23,11,11,15,19,13,10,13,14,5,4,7,4,3,2,0),
Stop1=c(0,0,0,0,0,0,22,17,21,30,29,40,38,43,44,24,40,32,31,22,12,7,12,0),
Stop2=c(0,0,0,0,0,1,5,12,17,12,6,6,17,14,15,9,11,9,11,7,9,3,4,0))

数据我想这就是你想要的。如您所见,我通过两个类别“开始”和“停止”对这四种变量类型进行了分类

库(ggplot2)

数据不确定融化的$variable是什么,因为问题中没有提到。非常感谢,太好了。是否可以防止时隙被洗牌?它们应该保持时间段中给出的顺序…@Geronimo这是否回答了您的问题?
library(reshape2) # for melt
melted2 <- melt(data, "timeslot")
melted2$cat <- ''
melted2[melted$variable == 'value1',]$cat <- "Start1"
melted2[melted$variable == 'value2',]$cat <- "Start2"
melted2[melted$variable == 'value3',]$cat <- "Stop1"
melted2[melted$variable == 'value4',]$cat <- "Stop2"

ggplot(melted2, aes(x = cat, y = value, fill = variable)) + 
   geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ timeslot)
library(ggplot2)
data <- data.frame(timeslot=c("0-1", "1-2", "2-3", "3-4", "4-5", "5-6", "6-7", "7-8", "8-9", "9-10", "10-11", "11-12", "12-13", "13-14", "14-15", "15-16", "16-17", "17-18", "18-19", "19-20", "20-21", "21-22", "22-23", "23-0"),
                   Start1=c(3,0,1,0,0,1,2,22,58,41,30,41,52,52,38,35,20,18,14,19,12,2,9,0),
                   Start2=c(0,0,0,0,0,0,0,13,23,11,11,15,19,13,10,13,14,5,4,7,4,3,2,0),
                   Stop1=c(0,0,0,0,0,0,22,17,21,30,29,40,38,43,44,24,40,32,31,22,12,7,12,0),
                   Stop2=c(0,0,0,0,0,1,5,12,17,12,6,6,17,14,15,9,11,9,11,7,9,3,4,0))


library(reshape2) # for melt
melted <- melt(data, "timeslot")
melted$cat <- ''
melted[grep(melted$variable, pattern='Start'),]$cat <- "Start"
melted[grep(melted$variable, pattern='Stop'),]$cat <- "Stop"

melted$timeslot <- factor(melted$timeslot, levels=c("0-1", "1-2", "2-3", "3-4", "4-5", "5-6", "6-7", "7-8", "8-9", "9-10", "10-11", "11-12", "12-13", "13-14", "14-15", "15-16", "16-17", "17-18", "18-19", "19-20", "20-21", "21-22", "22-23", "23-0"))
ggplot(melted, aes(x = cat, y = value, fill = variable)) + 
  geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ timeslot) +
  scale_fill_manual(values = c("royalblue3", "royalblue1", "#8B4513", "#B8860B")) +
  theme(legend.position = "bottom", axis.text.x = element_text(size=7))