2017-05-26 35 views
0

我有一年的列和其他列中的其他几个变量的tibble。我想随着时间的推移使用ggplot2创建一些图,其中所有其他列随时间绘制。有没有办法做到这一点很容易,而不需要手动创建所有的情节?下面是一些示例代码:如何快速绘制一列胫骨与所有其他列?

library(tidyverse) 
library(gridExtra) 

temp <- tibble(
    num = 1:10, 
    v = num +num^2, 
    w = num^2, 
    z = num + 3 
) 

temp 

p1 <- ggplot(temp, aes(x = num, y = v)) + 
    geom_point() + labs(y = "v") 

p2 <- ggplot(temp, aes(x = num, y = w)) + 
    geom_point() + labs(y = "w") 

p3 <- ggplot(temp, aes(x = num, y = z)) + 
    geom_point() + labs(y = "z") 

grid.arrange(p1, p2, p3, nrow = 2, ncol = 2) 

实际上我一起工作的tibble有我在探索数据和周围改变事物5和15之间的列。

那么有没有一种快速的方法来做到这一点,而不是单独创建的情节?

回答

1
temp %>% 
    tidyr::gather(variable, value, -num) %>% 
    ggplot(aes(num, value)) + 
    geom_point() + 
    facet_wrap(~variable, ncol = 2, nrow = 2) 
+0

这个效果非常好!谢谢! –

1
setdiff(names(temp), "num") %>% 
    map(~ ggplot(temp, aes_string("num", .x)) + 
    geom_point() + labs(y=.x)) %>% 
    grid.arrange(grobs=., ncol=3) 
+0

感谢您的解决方案!它可以工作,并产生与@RoyalTS提出的解决方案几乎相同的东西。根据我的经验,他可以更容易地解释它是如何工作的。 –

+0

@ RoyalTS的答案使用了分面,它创建了一个包含多个面板的单个绘图。我的答案创建了三个独立的图,并将它们与'grid.arrange'一起放置。 'map'只负责迭代列以创建单独的图。 'map'是一个'tidyverse'函数,类似于从基地R'lapply'。 – eipi10

+0

我不知道!感谢知识的一小部分。 –

0

您可以使用包GGally的探索性数据分析。

library(GGally) 
ggpairs(data = temp) 
+0

这种解决方案确实能在一种时尚之后起作用,尽管它提供了比我需要的更多信息,而不是立即如何解释所有事情。虽然我一定会记住这一点以备将来分析!谢谢! –

+0

@ScottWhite是的,可能太多的信息。 – www