使用ggplot2在R中堆积条形图

时间:2015-10-25 09:26:28

标签: r ggplot2

我正在尝试使用ggplot2创建堆积条形图。这是我的数据的样子

Date          Full.Page.Ads Total.Pages
11/10/2015                3          24
12/10/2015               10          24
13/10/2015               15          24

这是我试图用来可视化数据的代码

library("ggplot2")
library("reshape2")

ns <- read.csv("NS.csv")

ggplot(data=ns, aes(x = Date, y = Total.Pages, fill=Full.Page.Ads)) + geom_bar(stat = "identity")

但出于某种原因,而不是制作一个合适的堆积条形图,它会继续制作类似http://imgur.com/rqxEzjF.jpg的东西。而不是这个我想显示主要栏作为Total.Pages和那些栏内,Full.Page.Ads栏以不同的颜色。

我不确定我在这里做错了什么。

这是我想要制作http://blog.visual.ly/wp-content/uploads/2012/08/StackedPercent.png

的样本

1 个答案:

答案 0 :(得分:0)

您必须在绘图前融化数据。如果希望图表表示Full.Page.Ads相对于总页数的比例,您还需要计算Total.Pages和Full.Page.Ads之间的差异。类似的东西:

ns <- data.frame(Date = c("11/10/2015", "12/10/2015", "13/10/2015"),
               Full.Page.Ads = c(3, 10, 15),
               Total.Pages = c(24, 24, 24))

#    Date Full.Page.Ads Total.Pages
# 1 11/10/2015             3          24
# 2 12/10/2015            10          24
# 3 13/10/2015            15          24


ns$not.Full.Page.Ads <- ns$Total.Pages - ns$Full.Page.Ads
ns$Total.Pages <- NULL
ns2 <-melt(ns)

#        Date          variable value
#1 11/10/2015     Full.Page.Ads     3
#2 12/10/2015     Full.Page.Ads    10
#3 13/10/2015     Full.Page.Ads    15
#4 11/10/2015 not.Full.Page.Ads    21
#5 12/10/2015 not.Full.Page.Ads    14
#6 13/10/2015 not.Full.Page.Ads     9

ggplot(data = ns2, aes(x = Date, y = value, fill = variable)) + geom_bar(stat = "identity")