在R中绘制多个图
所以我想在同一时间为每个地方绘制多个图,在y轴上显示访问次数,在x轴上显示访问天数,但我不确定是否有这样的功能 因此,我能够通过将地点a细分,为地点a绘制一幅图:在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
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))