我整个上午都在尝试这个,但在阅读stackoverflow上的相关帖子后仍然找不到解决方案
我有以下代码:
names <- colnames(df[17:length(df)])
counter = 17L
for (i in 1:length(names)) {
df.tax <- subset(df, df[,c(counter)] != 0)
counter = counter + 1L
meta <- subset(df.tax, select=c(1:16))
meltmeta <- melt(meta, id=c("Collector", "Year","Week","Cities","Provinces"))
ppv <- ggplot(meltmeta, aes(title = paste(names[i]), factor(Provinces), value))
ppv + geom_boxplot() + geom_boxplot(aes(fill=Collector), alpha=I(0.5)) + geom_point(aes(color=Collector), size=1) +facet_wrap(~variable, scale="free")
ggsave(file = paste(names[i], sep=".","provinces_vs_climate.pdf"), width=16, height=8)
}
我的问题是,我无法为ggplot添加正确的标题。在for循环的每次迭代中,我通过对df的部分进行子集生成一个名为df.tax的新数据帧。我融化了df然后尝试使用ggplot生成一个图。
我设法在ggsave的每次迭代中使用不同的文件名(基于名称数组)保存每个绘图,但ggplot只是为每个绘图生成标题“paste(names [i])”。
我试过,get(),paste(),labs()等等,但没有工作
任何人都知道如何解决这个问题?
答案 0 :(得分:11)
正如joran所提到的,自ggplot2的0.9.2版以来,为你的情节设置标题的最简单方法是使用ggtitle
。使用ggtitle
代码看起来像这样:
for (i in 1:length(names)) {
df.tax <- subset(df, df[,c(counter)] != 0)
counter = counter + 1L
meta <- subset(df.tax, select=c(1:16))
meltmeta <- melt(meta, id=c("Collector", "Year","Week","Cities","Provinces"))
ppv <- ggplot(meltmeta, aes(factor(Provinces), value))
ppv <- ppv + geom_boxplot()
ppv <- ppv + geom_boxplot(aes(fill=Collector), alpha=I(0.5))
ppv <- ppv + geom_point(aes(color=Collector), size=1)
ppv <- ppv + facet_wrap(~variable, scale="free")
ppv <- ppv + ggtitle(paste(names[i]))
ggsave(file = paste(names[i], sep=".","provinces_vs_climate.pdf"), width=16, height=8)
}