Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R GG绘制多个图形_R_Ggplot2_Gridextra - Fatal编程技术网

R GG绘制多个图形

R GG绘制多个图形,r,ggplot2,gridextra,R,Ggplot2,Gridextra,我知道关于这个话题已经有很多答案了。然而,对于一个新手来说,仍然有一些步骤我无法绕过。我们开始吧。希望你能帮助我 我想把四块不同的地一块一块地排好。我使用的是ggplot,所以我不能使用par(mfrow=c(2,2)),但它本质上和我想做的是一样的。据我所知,我应该使用gridExtra。这是我的代码: Plot_Graph <- function(DF, na.rm = TRUE){ nm = names(DF)[-1] for (i in nm) { p <- g

我知道关于这个话题已经有很多答案了。然而,对于一个新手来说,仍然有一些步骤我无法绕过。我们开始吧。希望你能帮助我

我想把四块不同的地一块一块地排好。我使用的是ggplot,所以我不能使用
par(mfrow=c(2,2))
,但它本质上和我想做的是一样的。据我所知,我应该使用gridExtra。这是我的代码:

Plot_Graph <- function(DF, na.rm = TRUE){
  nm = names(DF)[-1]
  for (i in nm) {
   p <- ggplot(DF, aes(x = Date, y = get(i))) +
           geom_line() + 
           scale_x_date(minor_breaks = "1 year") +
           xlab("Year") + 
           ylab("Stock price US$") +
           ggtitle(paste(i)) +
           theme_bw()
   grid.arrange(p)
  }
}
我想我的问题真的是,在循环时,我不知道我的绘图存储在哪里,所以我可以再次访问它们。

您可以使用优秀的软件包:


你需要将它们放在一个列表中,然后
网格中。排列
,尽量不要使用get(),它有时会造成一些混乱(在我看来),我曾经使用过!!sym()如下:


Plot\u图形谢谢。我更喜欢两个中第一个的样子。但我无法让代码正常工作。在使用
Plot\u Graph(DFbasket)
调用函数之前。我应该为一个新函数命名吗?如果您只是运行答案中的代码,它应该会生成绘图,如果出现错误,您可能需要安装补丁或将数据框重命名为
DF
。如果您愿意,您可以轻松地将代码包装到一个函数中,该函数将数据帧作为参数。绘图已保存在四个列表中,但当我调用:
Reduce(
+
,plots[1:2])/Reduce(
+
,plots[3:4])
我也尝试过
绘图网格(plots[[1]],plots[[2]],labels=“AUTO”)
这是相同的。我也没有收到任何错误。我重新启动了R并使用了
plot\u网格(plots[[1]]、plots[[2]]、labels=“AUTO”)
。不知道为什么另一件事没有。
structure(list(Date = structure(c(10960, 10961, 10962, 10963, 
10966), class = "Date"), AAPL = c(1, 1.01463414634146, 0.926829268292683, 
0.970731707317073, 0.953658536585366), GE = c(1, 0.998263888888889, 
1.01159722222222, 1.05076388888889, 1.05034722222222), SPY = c(1, 
1.00178890876565, 0.985688729874776, 1.04293381037567, 1.04651162790698
), WMT = c(1, 0.976675478152698, 0.990359197636448, 1.06515316436013, 
1.04571606282071)), row.names = c(NA, 5L), class = "data.frame")
library(ggplot2)
library(patchwork)

nm <-  names(DF)[-1]

plots <- lapply(nm, function(x) {
  ggplot(DF, aes(x = Date, y = get(x))) +
    geom_line() + 
    scale_x_date(minor_breaks = "1 year") +
    xlab("Year") + 
    ylab("Stock price US$") +
    ggtitle(x) +
    theme_bw()
})

Reduce(`+`, plots) + plot_layout(nrow = 2)
library(ggplot2)
library(tidyr)

DF %>% 
  pivot_longer(-Date) %>% 
  ggplot(aes(Date, value)) +
  geom_line() + 
  scale_x_date(minor_breaks = "1 year") +
  xlab("Year") + 
  ylab("Stock price US$") +
  theme_bw() +
  facet_wrap(~name)
Plot_Graph <- function(DF, na.rm = TRUE){
nm = names(DF)[-1]
plts = lapply(nm,function(i){
   p <- ggplot(DF, aes(x = Date, y = !!sym(i))) +
           geom_line() + 
           scale_x_date(minor_breaks = "1 year") +
           xlab("Year") + 
           ylab("Stock price US$") +
           ggtitle(paste(i)) +
           theme_bw()
    return(p)
   })
grid.arrange(grobs=plts,ncol=2)   
}