您应该更准确地澄清您的问题,以便读者确切地知道您想要什么。还希望您通过解释您已经尝试过的方法来展示解决问题的努力。
因此,我只能猜测您想要什么,这是我的建议:
加载所需的包:
require(ggplot2)
require(reshape2)
require(plyr)
重新创建你的 df:
location = c('A','A','B','B','C','C')
type = rep(c(1,2),3)
fdate = rep('12-Jul', 6)
tdate = rep('13-Jul', 6)
v1 = c(2,0,0,1,2,3)
v2 = c(4,0,1,0,3,3)
v3 = c(0,1,1,0,1,1)
v4 = c(1,4,3,0,5,0)
v5 = c(2,1,1,1,0,0)
dat = data.frame(location, type, fdate, tdate, v1, v2, v3, v4, v5)
重新排列数据以进行绘图:
melted = melt(dat, id.vars=c('location', 'type', 'fdate', 'tdate'))
sums = ddply(melted, c('fdate', 'tdate', 'location', 'type', 'variable'),
summarise, sum=sum(value))
用 ggplot2 绘图:
ggplot(aes(x=variable, y=sum, fill=as.factor(type)), data=sums) +
geom_bar(stat="identity", position="dodge") +
facet_grid(location ~ .)
edit:使用您发布的确切数据框:
# read data
dat2 <- read.table(header=T, text="Location Type FromDate ToDate 1 2 3 4 5
A 1 12-Jul 13-Jul 2 4 0 1 2
A 2 12-Jul 13-Jul 0 0 1 4 1
B 1 12-Jul 13-Jul 0 1 1 3 1
B 2 12-Jul 13-Jul 1 0 0 0 1
C 1 12-Jul 13-Jul 2 3 1 5 0
C 2 12-Jul 13-Jul 3 3 1 0 0")
# rearranging data for plotting
melted = melt(dat2, id.vars=c('Location', 'Type', 'FromDate', 'ToDate'))
sums = ddply(melted, c('FromDate', 'ToDate', 'Location', 'Type', 'variable'),
summarise, sum=sum(value))
# plot with ggplot2
ggplot(aes(x=variable, y=sum, fill=as.factor(Type)), data=sums) +
geom_bar(stat="identity", position="dodge") +
facet_grid(Location ~ .)