合并图形对象R.

时间:2018-02-01 13:12:51

标签: r regression plotly r-plotly

我有两个散点图,我想表明回归线是不同的。

在一个案例中,我正在考虑1995 - 2017年的所有数据。我想表明,奇数年(95,97)的平均值高于一般情况。

所有数据的数据框为Bar,奇数年的数据框为bayern

我用图表创建了两条回归线:

bayern_ohne_wm_em

This gives me this:

但是,我实际上想在一个情节中使用两条线。 我会通过将两个数据帧加入到p1 <- plot_ly(bayern, x = ~Saison, color = I("black")) %>% add_markers(y = ~Bayern, text = rownames(bayern), showlegend = FALSE) %>% add_lines(y = ~fitted(loess(Bayern ~ Saison)), line = list(color = '#07A4B5'), name = "Realität", showlegend = TRUE) p2 <- plot_ly(bayern_ohne_wm_em, x = ~Saison, color = I("black")) %>% add_markers(y = ~Bayern, text = rownames(bayern_ohne_wm_em), showlegend = FALSE) %>% add_lines(y = ~fitted(loess(Bayern ~ Saison)), line = list(color = '#000000'), name = "Nur Saisons ohne WM/EM zuvor", showlegend = TRUE) subplot(p1, p2) 中来实现。 该数据框如下所示:

joint2

我尝试以下内容:

Saison    Bayern    ohne_WM_EM
2017      81        81
2016      75        NA
...

这给了我这个错误:

plot_ly(joint2, x = ~Saison, color = I("black")) %>%
 add_markers(y = ~Bayern, text = rownames(joint2), showlegend = FALSE) %>%
 add_lines(y = ~fitted(loess(Bayern ~ Saison)),
           line = list(color = '#07A4B5'),
           name = "Realität", showlegend = TRUE)%>%
add_markers(y = ~ohne_WM_EM, text = rownames(joint2), showlegend = FALSE) %>%
 add_lines(y = ~fitted(loess(ohne_WM_EM ~ Saison)),
           line = list(color = '#000000'),
           name = "Nur Saisons ohne WM/EM zuvor", showlegend = TRUE) 

谢谢你们!

编辑:

这里有一些调试内容:

Error: Column `y` must be length 1 or 22, not 11

1 个答案:

答案 0 :(得分:1)

ggplotly()可能会更容易。您正在添加不同长度的痕迹。也许别人会有更好的主意。但与此同时,你可以试试这个:

library(ggplot2)
#wide to long
joint2_long <- reshape2::melt(joint2, id.vars=c("Saison"))

a <- ggplot(data=joint2_long, aes(x=Saison, y=value, color = variable)) + 
  geom_point() +
  theme_bw() +
  geom_smooth(se = FALSE)

ggplotly(a)

它会给你这个:

enter image description here