格式化500+;在R?[包括图像和代码]

格式化500+;在R?[包括图像和代码],r,ggplot2,data-visualization,facet,R,Ggplot2,Data Visualization,Facet,我正在尝试显示890家供应商的每周销售额(y轴)和每周销售额(x轴)。我想使用镶嵌面包装来显示这些数据,以快速查看哪些供应商的销售额出现了飙升。我的RStudio控制台中的情节看起来是这样的。这是有道理的,因为在这里呈现绘图并不是最佳视图,但是,即使需要多页PDF,如何将绘图正确格式化为PDF格式呢。绘图代码 ggplot(Holiday_Spike_Table, aes(x = FSCL_WK, y = SLS))+ geom_col()+ facet_wrap(~MVNDR_NM)

我正在尝试显示890家供应商的每周销售额(y轴)和每周销售额(x轴)。我想使用镶嵌面包装来显示这些数据,以快速查看哪些供应商的销售额出现了飙升。我的RStudio控制台中的情节看起来是这样的。这是有道理的,因为在这里呈现绘图并不是最佳视图,但是,即使需要多页PDF,如何将绘图正确格式化为PDF格式呢。绘图代码

ggplot(Holiday_Spike_Table, aes(x = FSCL_WK, y = SLS))+ 
  geom_col()+
  facet_wrap(~MVNDR_NM)

为什么不将所有绘图单独插入一个pdf文件中,并完全删除facet\u wrap

可复制示例:

library(ggplot2)
library(stringi)

## generate dummy data
df <- data.frame(x=sample(1:10000, 1000, replace=TRUE),y=sample(1:100000, 1000, replace=TRUE))
df$id <- stri_rand_strings(n = nrow(df)/10, length = 4, pattern = "[A-Za-z0-9]")
完全摆脱facet_wrap并将绘图刷新为单个pdf

pdf("pathtopdf.pdf", onefile = TRUE)
for (i in unique(df$id)) {
  plot(ggplot(df[df$id==i,], aes(x = x, y = x)) + geom_point() + geom_smooth()) 
}
dev.off()

下面是如何制作多个页面-每个页面有5x5个供应商

我将使用890个供应商的虚拟数据

library("tidyverse")

df <- data.frame(
  vendor = rep(seq_len(890), each = 30) ,
  x = rep.int(seq_len(30), 890),
  y = runif(890 * 30),
  group = (rep(seq_len(890), each = 30) - 1) %/% 25
)

表中的
列在做什么?是否仅为将数据拆分为多个页面而添加?它在这里是如何工作的?是的,它只用于将数据拆分为单独的页面。与前25个绘图相关的数据将具有
group=1
,接下来25个绘图的数据将具有
group=2
等。
library("tidyverse")

df <- data.frame(
  vendor = rep(seq_len(890), each = 30) ,
  x = rep.int(seq_len(30), 890),
  y = runif(890 * 30),
  group = (rep(seq_len(890), each = 30) - 1) %/% 25
)
plots <- 
  df %>%
  group_by(group) %>%
  group_map(function(g, ...) ggplot(g, aes(x, y)) + geom_line() + facet_wrap(~vendor, ncol = 5))
ggsave("plots.pdf", gridExtra::marrangeGrob(plots, nrow = 1, ncol = 1))