我试图根据主数据表生成一系列条形图,每个条形图对应7个省份。但是,该软件仅绘制来自其中一个省的数据 - 省4.当我导出为PDF时,我得到7个相同的条形图(具有不同的标题)。
数据格式为(缩写为清晰)
province travelcat pc_pop
60 1 0 to 4 hours 0.6807
21 1 4 to 8 hours 0.1093
28 2 4 to 8 hours 0.0969
44 2 36 to 48 hours 0.0014
31 3 48 to 72 hours 0.0016
49 3 > 72 hours 0.0007
奇怪的是,当我生成一个过滤后的表格prov_filter
并打印出来时,它会完全按照我所期望的那样显示数据,特定于每个省份。同样,在生成的PDF打印输出中正确分配了省标题province_number
。所以过滤正在发生......但数据并没有进入图中。
province_list=list()
for (i in unique(slim_prov_TCR$province)) {
province_number <- paste("Province",i)
prov_filter <- filter(slim_prov_TCR, province == i)
print(prov_filter)
plot <- ggplot(prov_filter, aes(x = prov_filter$travelcat, y = prov_filter$pc_pop))
+ theme(axis.text.x = element_text(angle=45, hjust=1))
+ scale_y_continuous(limits=c(0,1),labels = scales::percent)
+ ylab("% of provincial population") + xlab("Travel time to nearest medical facility")
+ ggtitle(province_number)
+ stat_summary(fun.y="identity",geom="bar")
filename=paste(province_number,".pdf",sep="")
province_list[[i]] = plot
print(plot)
}
我在使用类似代码之前没有遇到任何问题,但是这次我遇到了串行问题,尽管使用多种方法修改了过滤器代码。对于R和统计数据来说,我相对较新,所以我可能会在语法方面捣乱。任何和所有帮助表示赞赏。
供参考,最终打印输出代码如下
for (i in unique(slim_prov_TCR$province)) { # Another for loop, this time to save out the bar charts in province_list as PDFs
province_number <- paste("Province",i)
filename=paste(province_number,".pdf",sep="") # Make the file name for each PDF. The paste makes the name a variable of the disrict, so each chart is named by sensor
pdf(filename,width=3.5,height=3.5) # PDF basic specifications. Modify the width and height here.
print(province_list[[i]])
dev.off()
}
答案 0 :(得分:0)
正如alistaire和Gregor所强调的那样,对于类别使用$
并且在行的开头使用+
令人困惑R.重新格式化这两个点就行了。见下文。
province_list=list()
for (i in unique(slim_prov_TCR$province)) {
province_number <- paste("Province",i)
prov_filter <- filter(slim_prov_TCR, province == i)
print(prov_filter)
plot <- ggplot(prov_filter, aes(x = travelcat, y = pc_pop)) +
theme(axis.text.x = element_text(angle=45, hjust=1)) +
scale_y_continuous(limits=c(0,1),labels = scales::percent) +
ylab("% of provincial population") + xlab("Travel time to nearest medical facility") +
ggtitle(province_number) +
stat_summary(fun.y="identity",geom="bar")
filename=paste(province_number,".pdf",sep="")
province_list[[i]] = plot
print(plot)
}