需要在Y轴ggplot上绘制两个变量

时间:2015-11-18 11:35:17

标签: r ggplot2

我试图在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。

请建议如何实现我所需要的。

由于

1 个答案:

答案 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

enter image description here