首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr包生成绘图文件失败

使用dplyr包生成绘图文件失败
EN

Stack Overflow用户
提问于 2017-04-23 17:56:26
回答 3查看 72关注 0票数 0

我使用R中的dplyr包来制作地块,并且很难用pdf格式保存地块。

我有一个有几组数据的数据框架,我想要绘制每组数据并以pdf格式保存这些图。我试图在dplyr包中使用do和group_by,但是没有生成pdf文件。没有错误信息。

代码语言:javascript
复制
rm(list = ls())

library(dplyr)

df=data.frame(x = c(rep('a',10),rep('b',10)),y = c(1:20))

plt = function(df)
{
  pdf('plt1.pdf')

  plot(df$x,df$y)

  dev.off()

  return(data.frame())
}

plt(df)

df %>% group_by(x) %>% do(data.frame(plot(.$y)))

我也尝试了/,类似的代码也不起作用。

有人能帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-23 18:10:47

您需要在plt中调用do函数;如果要为每组数据生成一个单独的pdf文件,则必须根据数据组相应地修改文件名,否则文件将被最后一组数据中的一个情节覆盖:

代码语言:javascript
复制
plt = function(df) {
    pdf(sprintf('plt_%s.pdf', df$x[1]))
    plot(df$x,df$y)
    dev.off()
    return(data.frame())
}

df %>% group_by(x) %>% do(plt(.))

此外,如果您只想拥有按x分组的y的单个方框图,则可以使用一个boxplot

代码语言:javascript
复制
boxplot(y ~ x, data = df)
票数 2
EN

Stack Overflow用户

发布于 2017-04-23 18:17:59

以下是解决您的问题的解决方案:

代码语言:javascript
复制
rm(list = ls())
library(dplyr)
df=data.frame(x = c(rep('a',10),rep('b',10)),y = c(1:20))

plt = function(k, dtset) {
 pdf(paste('plt',k,'.pdf',sep=""))
 plot(dtset$y)
 dev.off()
}
plt(1, df)

grps <- unique(df$x)
for (k in seq_along(grps)) {
 plt(k, subset(df, df$x==grps[k]))
}
票数 2
EN

Stack Overflow用户

发布于 2017-04-23 18:24:53

如果您想将所有的地块放在一个PDF中,并且不介意使用ggplot,您可以这样做:

代码语言:javascript
复制
library(dplyr)
library(ggplot2)
library(gridExtra)

# i'm using a different test data set to make scatter plots
set.seed(1)
df <- data.frame(id = rep(c("a", "b"), each = 10),
                 var1 = rnorm(20),
                 var2 = rnorm(20),
                 stringsAsFactors = FALSE)

# make a list of plots, one for each group (id)
plotlist <- lapply(unique(df$id), function(x)

  df %>%
    filter(id == x) %>%
    qplot(x = var1, y = var2, data = ., main = x)

)

# use marrangeGrob from gridExtra to get an arranged version of that list
mg = marrangeGrob(plotlist, nrow = 2, ncol = 1)

# now use ggsave to write a pdf with the plots arranged as specified in the
# previous step to the working directory; see documentation for ways to tinker
# with layout, file type, etc.
ggsave("myplots.pdf", mg)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43574588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档