6

我整个早上都在尝试这个,但在阅读了关于 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()...等,但都没有用

有谁知道我该如何解决这个问题?

4

1 回答 1

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)
}
于 2013-04-08T21:13:05.997 回答