我正在尝试使用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
的样本答案 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")