在R中绘制多个图

在R中绘制多个图,r,ggplot2,R,Ggplot2,所以我想在同一时间为每个地方绘制多个图,在y轴上显示访问次数,在x轴上显示访问天数,但我不确定是否有这样的功能 因此,我能够通过将地点a细分,为地点a绘制一幅图: placeA <- subset(df$place=="A") ggplot(data=placeA, aes(x=Day, y=Num_OfVisits, group=1)) + geom_line(color="#00AFBB", size=0.5) + theme(axis.text.x=element_tex

所以我想在同一时间为每个地方绘制多个图,在y轴上显示访问次数,在x轴上显示访问天数,但我不确定是否有这样的功能

因此,我能够通过将地点a细分,为地点a绘制一幅图:

placeA <- subset(df$place=="A")

ggplot(data=placeA, aes(x=Day, y=Num_OfVisits, group=1)) +
  geom_line(color="#00AFBB", size=0.5) +
  theme(axis.text.x=element_text(angle=90,hjust=1, size=5))

placeA您可以编写一个函数,将数据帧和
Place
作为输入,然后循环遍历
Place
列中的所有值,以创建相应的绘图

library(tidyverse)

df <- data_frame(
  Place = c(rep(c("A", "B", "C"), each = 3)),
  Num_of_Visits = seq(1:9),
  Day = rep(c("Sunday", "Monday", "Tuesday"), 3)
)

df <- df %>% 
  mutate(Day = factor(Day, levels = c("Sunday", "Monday", "Tuesday")))

my_plot <- function(df, myvar) {      
  ggplot(data = df %>% filter(Place == myvar), 
         aes(x = Day, y = Num_of_Visits, group = 1)) +
    geom_line(color = "#00AFBB", size = 0.5) +
    theme(axis.text.x = element_text(angle = 90, vjust = 0.5))      
}

# test
my_plot(df, 'A')
使用
purrr::walk()显示所有绘图

使用
purr::iwalk()将所有绘图保存到PNG文件

如果需要,使用
cowplot::plot\u grid()将所有绘图组合在一起


由(v0.2.1.9000)于2018年10月19日创建。

请不要发布代码/数据/错误的图像,只发布文本本身。有几个原因是直接的:我无法将您的图像中的代码或数据复制到我的R控制台并试用,我选择不手动转录。有些原因不那么明显,但仍然很重要,包括:它严重破坏了屏幕阅读器;搜索引擎不会阅读它们,所以搜索不会找到它;移动设备屏幕大小可能是一个限制因素。裁判:对不起。我试着这么做,但格式不好,所以我决定上传一张照片。
dput(x)
效果非常好<代码>dput(头(x,n=10))
如果数据“大”,谢谢!只有一个地方立即起作用,但多个地方似乎使R停止响应,从某种意义上说,R需要45分钟才能打开停止标志,当停止标志消失时,它没有显示错误消息,但也没有生成绘图。这在R 3.5.1和最新的
tidyverse
软件包上起作用。您可能需要更新您的电脑,因为我有最新的R软件和tidyverse软件包。我在“漫游(打印列表,打印)”后收到此错误。我得到的错误是geom_路径:每个组只包含一个观测值。您是否需要调整团队美学?grid.Call.graphics(C_setviewport,vp,TRUE)中出错:视口的非有限位置和/或大小确保您的变量名与我的相同(
Num\u of\u visions
)。如果不提供数据样本,很难提供帮助。您应该在问题中添加
dput(df)
的输出。请参阅此处的详细信息&@yiyle:在运行代码之前尝试重新启动R/RStudio,以确保与其他包没有任何冲突
plot_list <- unique(df$Place) %>% 
  purrr::set_names() %>% 
  purrr::map( ~ my_plot(df, .x))
str(plot_list, max.level = 1)
#> List of 3
#>  $ A:List of 9
#>   ..- attr(*, "class")= chr [1:2] "gg" "ggplot"
#>  $ B:List of 9
#>   ..- attr(*, "class")= chr [1:2] "gg" "ggplot"
#>  $ C:List of 9
#>   ..- attr(*, "class")= chr [1:2] "gg" "ggplot"
purrr::walk(plot_list, print)
purrr::iwalk(plot_list,
             ~ ggsave(plot = .x,
                      filename = paste0("Plot_", .y, ".png"),
                      type = 'cairo', width = 6, height = 6, dpi = 150)
)
library(cowplot)
do.call(plot_grid, c(plot_list, 
                     align = "h",
                     axis = 'tb',
                     ncol = 3))