R 按组排列“ggplot”图形

R 按组排列“ggplot”图形,r,ggplot2,R,Ggplot2,我试图从下面的两个ggplot图中安排一个分组ggplot。我附上了一张我希望实现的目标的图片,但不确定如何实现 我使用以下代码创建两个绘图 Ra_plot %>% filter(date >= as_date("2016-12-01")) %>% ggplot(aes(x = date, y = adjusted, color = symbol)) + geom_line(size = 1) + facet_wrap(~ symbol, ncol = 2, s

我试图从下面的两个ggplot图中安排一个分组ggplot。我附上了一张我希望实现的目标的图片,但不确定如何实现

我使用以下代码创建两个绘图

Ra_plot %>%
  filter(date >= as_date("2016-12-01")) %>%
  ggplot(aes(x = date, y = adjusted, color = symbol)) +
  geom_line(size = 1) +
  facet_wrap(~ symbol, ncol = 2, scales = "free_y")


Ra_plot %>%
  filter(date >= as_date("2016-12-01")) %>%
  ggplot(aes(x = date)) +
  geom_line(aes(y = signal), color = "blue", linetype = 2) +
  geom_bar(aes(y = diff), stat = "identity", color = palette_light()[[1]]) +
  facet_wrap(~ symbol, ncol = 2, scale = "free_y")
我希望得到如下输出:

我应该考虑使用网格还是ggplot可以按照我希望的方式来安排绘图

数据:

因此,我试图在第二个图上方绘制调整后的symbol=CCT6-018列,如第一幅图所示


另外,我正在使用tidyquant-如果某些命令不起作用。

以下是您需要的:

Ra_plot %>%
    gather(measure, value, adjusted, signal, diff) %>%
    mutate(dummy_facet = case_when(
        measure == "adjusted" ~ paste0("adjusted", symbol),
        measure == "signal" ~ paste0("sig_diff", symbol),
        measure == "diff" ~ paste0("sig_diff", symbol)
    )) %>%
    mutate(dummy_facet = factor(dummy_facet, levels = c("adjustedCCT6-018", "adjustedCCT6-019", "sig_diffCCT6-018", "sig_diffCCT6-019", "adjustedCCT6-020", "adjustedCCT6-021", "sig_diffCCT6-020", "sig_diffCCT6-021"))) %>%
    filter(date >= as_date("2016-12-01")) %>% 
    ggplot(aes(x = date, y = value))+
    geom_line(data = . %>% filter(measure == "adjusted"), aes(color = symbol), size = 1)+
    geom_line(data = . %>% filter(measure == "signal"), color = "blue", linetype = 2) +
    geom_bar(data = . %>% filter(measure == "diff"), stat = "identity", color = palette_light()[[1]])+
    facet_wrap(~dummy_facet, ncol = 2, scale = "free_y")+
    theme(legend.position = "none")
首先,我们收集所有要绘制在一起的数据。接下来,我们创建一个虚拟的facet变量,以确保获得所需的所有绘图。你可以去掉虚拟变量和符号的刻面,但是,我个人喜欢只在一个变量上刻面,因为我不喜欢在绘图上有两个刻面标签。这就是为什么我用虚拟标签粘贴符号。我还将变量更改为一个因子,然后将级别设置为您希望它们绘制的顺序。接下来,我们为每个绘图过滤适当的y值,并按正常方式绘图。您需要稍微使用labeller参数来修复刻面标签,如果您在这方面遇到问题,请告诉我


这怎么不是的复制品呢?你得画两个图,然后把它们结合起来。有太多的问题需要讨论组合GGPlot。使用链接中建议的cowplot只是并排绘制两个图,我的目标是在重新安排每个分组图时具有更大的灵活性。也许我必须以一种更合适的方式来组织数据。我的目标是在重新安排每个分组图时有更多的灵活性,这对我来说是不清楚的。谢谢你,是的,这正是我想要的!我不关心标签的美观。我必须找出一种方法来修改等级=cadjustedCCT6-018、adjustedCCT6-019、sig_diffCCT6-018、sig_diffCCT6-019、adjustedCCT6-020、adjustedCCT6-021、sig_diffCCT6-020、sig_diffCCT6-021,因为我拥有的数据可以采用不同的符号,增加符号数量和不同的符号名称。我建议您设置facet变量,以便您可以按字母顺序列出所需的级别。这可能有助于使方法更具活力。
# A tibble: 168 x 6
# Groups:   symbol [4]
   symbol   date       adjusted   macd  signal    diff
   <chr>    <date>        <dbl>  <dbl>   <dbl>   <dbl>
 1 CCT6-018 2016-11-01     130.  0.776  0.471   0.304 
 2 CCT6-018 2016-11-02     127.  0.797  0.551   0.247 
 3 CCT6-018 2016-11-03     120.  0.521  0.586  -0.0645
 4 CCT6-018 2016-11-04     121.  0.136  0.560  -0.424 
 5 CCT6-018 2016-11-07     122. -0.189  0.486  -0.675 
 6 CCT6-018 2016-11-08     124. -0.563  0.373  -0.935 
 7 CCT6-018 2016-11-09     123. -1.07   0.197  -1.27  
 8 CCT6-018 2016-11-10     121. -1.59  -0.0493 -1.54  
 9 CCT6-018 2016-11-11     119. -2.09  -0.363  -1.72  
10 CCT6-018 2016-11-14     115. -2.63  -0.742  -1.89  
# ... with 158 more rows
Ra_plot %>%
    gather(measure, value, adjusted, signal, diff) %>%
    mutate(dummy_facet = case_when(
        measure == "adjusted" ~ paste0("adjusted", symbol),
        measure == "signal" ~ paste0("sig_diff", symbol),
        measure == "diff" ~ paste0("sig_diff", symbol)
    )) %>%
    mutate(dummy_facet = factor(dummy_facet, levels = c("adjustedCCT6-018", "adjustedCCT6-019", "sig_diffCCT6-018", "sig_diffCCT6-019", "adjustedCCT6-020", "adjustedCCT6-021", "sig_diffCCT6-020", "sig_diffCCT6-021"))) %>%
    filter(date >= as_date("2016-12-01")) %>% 
    ggplot(aes(x = date, y = value))+
    geom_line(data = . %>% filter(measure == "adjusted"), aes(color = symbol), size = 1)+
    geom_line(data = . %>% filter(measure == "signal"), color = "blue", linetype = 2) +
    geom_bar(data = . %>% filter(measure == "diff"), stat = "identity", color = palette_light()[[1]])+
    facet_wrap(~dummy_facet, ncol = 2, scale = "free_y")+
    theme(legend.position = "none")