如何使用R控制水平堆积条形图中的值范围

时间:2014-10-15 10:29:41

标签: r ggplot2 stacked-chart

以下是给出带有时间轴值0-300的堆积条形图的代码。但我希望它是1-24。

R代码:

library(ggplot2)
dataFrame <- data.frame(sr=c(1:72),
                      hours=c(1:24),
                      mode=factor(c(""),levels = c("SecureMessaging","WebLogs","IVR")),
                      status=factor(c("Inactive"),levels = c("Active","Inactive")))
dataFrame$mode[1:24] <- "SecureMessaging"
dataFrame$mode[25:48] <- "WebLogs"
dataFrame$mode[49:72] <- "IVR"
dataFrame$status[2] <- "Active"
dataFrame$status[7] <- "Active"
dataFrame$status[24] <- "Active"
dataFrame$status[2+24] <- "Active"
dataFrame$status[12+24] <- "Active"
dataFrame$status[15+24] <- "Active"
dataFrame$status[3+48] <- "Active"
dataFrame$status[5+48] <- "Active"
dataFrame <- na.omit(dataFrame)
plot <- ggplot(data=dataFrame, aes(x=mode, y=hours, fill=status)) + geom_bar(stat="identity")
plot <- plot+coord_flip()
plot <- plot+ggtitle("Data Analytics")
plot <- plot+xlab("Mode")
plot <- plot+ylab("Time Line")
print(plot)

enter image description here

3 个答案:

答案 0 :(得分:1)

技术上不是直接的答案,因为我建议使用geom_tile进行替代实施:

gg <- ggplot(data=dataFrame, aes(y=mode, x=factor(hours)))
gg <- gg + geom_tile(aes(fill=status))
gg <- gg + coord_equal()
gg <- gg + labs(x="Mode", y="Time Line", title="Data Analytics")
gg <- gg + theme_bw()
gg <- gg + theme(panel.grid=element_blank())
gg <- gg + theme(panel.border=element_blank())
gg <- gg + theme(legend.position="bottom")
gg

enter image description here

答案 1 :(得分:0)

如果您想在24(在0,300范围内)切割结果,请在打印(绘图)之前添加以下行。然而,结果还不完美,因为&#34;不活跃&#34;酒吧在24点之前停止。

plot <- plot+ylim(0,24)

但是,我不确定你是否想要这个。可能你不满意从0到300适用的缩放比例并希望得到它0-24。在这种情况下,请尝试以下方法。 &#34; 1&#34;应该取代&#34;小时&#34;在你的情节函数中,如下所示:

plot <- ggplot(data=dataFrame, aes(x=mode, 1, fill=status)) + geom_bar(stat="identity")

figure for second option

答案 2 :(得分:0)

带有正确x轴的条形图:

ggplot(dataFrame, aes(x=hours,y=status, fill=status))+ geom_bar(stat='identity')+ facet_grid(mode~.)

enter image description here