我试图在Y轴上绘制两个不同的变量,而在X轴上绘制一个变量。我正在使用ggplot geom_bar。但是,结果并没有像我想要的那样。我的数据框如下所示:
DAY_OF_WEEK CATEGORY_TOTAL OVERALL_TOTAL CAT_PERCENT OVERALL_PERCENT
1 FRIDAY 4893 30542 16 20
2 MONDAY 5198 31197 17 20
3 SATURDAY 133 1139 12 1
4 THURSDAY 4806 29641 16 19
5 TUESDAY 5184 31757 16 21
6 WEDNESDAY 4569 28090 16 18
ggplot(my_data_frame, aes(x=DAY_OF_WEEK,y=CATEGORY_TOTAL,fill=OVERALL_TOTAL)) +
geom_bar(stat="identity",position = "dodge")
我需要X轴上的DAY_OF_WEEK,以及每天彼此相邻的两个栏。一个栏对应CATEGORY_TOTAL,另一个栏对应OVERALL_TOTAL。同样,我也想要百分比的另一个情节。但是,使用上面的ggplot语句,我只得到一个条,即CATEGORY_TOTAL。
请建议如何实现我所需要的。
由于
答案 0 :(得分:0)
这是一个开始;首先我们融化数据然后我们绘制。
library(ggplot2)
library(reshape2)
#relevel days of the week as more logical
dat$DAY_OF_WEEK <- factor(dat$DAY_OF_WEEK, levels=c("MONDAY","TUESDAY","WEDNESDAY","THURSDAY",
"FRIDAY","SATURDAY","SUNDAY"))
#turn to long
m_dat <- melt(dat,id="DAY_OF_WEEK")
#create grouping variable
m_dat$group <- gsub(".+_","",m_dat$variable)
#plot based on selection
p1 <- ggplot(m_dat[m_dat$group=="TOTAL",],
aes(x=DAY_OF_WEEK,y=value,group=variable,fill=variable)) +
geom_bar(stat="identity",position="dodge")
p1