我正在尝试绘制人们参与营销内容时所采取的路径。
我有关于所有营销活动(点击链接等),他们的营销渠道&#39以及他们的参与职位的数据"。
参与职位如下:首先触摸[他们第一次与我们互动],领导创建[当他们形成填充并给我们足够的信息],机会创造[在机会创建之前发生的参与] ,并且关闭赢了[签署和购买之前发生的订婚]。
我实际上是成功映射路径,但问题是14个通道和100k +个别路径,结果图表非常难以理解。
因此,我想根据整个路径出现的频率来缩放线条的颜色。
这是我有数据的格式:
______________________________
| id | channel | position |
| 1 | direct | FT |
| 1 | SEM | LC |
| 1 | email | OC |
| 1 | video | CW |
| 2 | SEM | FT |
| 2 | Video | LC |
| 2 | Event | OC |
| 2 | Email | CW |
______________________________
所以我希望图表的Y轴是位置,X轴是通道,然后缩放每个单独路径的颜色(由ID标识)取决于整个路径的频率。所以我不希望它向我展示什么是最常见的FT到LC,然后是最常见的LC到OC等 - 我想让它显示最常见的完整路径。
这是我当前代码的数据示例:
这是使用以下代码创建的:
ggplot(tblp, aes(x=position, y=channel, group=id)) +
geom_line(alpha=.01, size=.5)
所以我现在需要做的就是根据整个路径的频率来改变色阶。这需要不同的数据框设置吗?
感谢任何帮助。
答案 0 :(得分:2)
您的数据目前已经过结构化,因此路径上的每个点都是一行;要衡量路径的频率,您需要重新整形数据,以便每个完整路径都是一行,然后将汇总数据加回到id
上的当前数据格式。通过tidyr::spread
和一些dplyr
操作,这非常简单。
library(tidyverse)
tb <- tribble(~id, ~channel, ~position
, 1, "direct", "FT"
, 1, "SEM", "LC"
, 1, "email", "OC"
, 1, "video", "CW"
, 2, "SEM", "FT"
, 2, "Video", "LC"
, 2, "Event", "OC"
, 2, "Email", "CW"
, 3, "SEM", "FT"
, 3, "Video", "LC"
, 3, "Event", "OC"
, 3, "Email", "CW")
spread_tb <- tb %>% spread(position, channel)
spread_tb
#> # A tibble: 3 x 5
#> id CW FT LC OC
#> * <dbl> <chr> <chr> <chr> <chr>
#> 1 1 video direct SEM email
#> 2 2 Email SEM Video Event
#> 3 3 Email SEM Video Event
to_plot <-
spread_tb %>%
group_by(FT, CW, LC, OC) %>%
summarise(n = n()) %>%
ungroup() %>%
right_join(spread_tb, by = c("FT", "CW", "LC", "OC")) %>%
select(n, id) %>%
right_join(tb, by = 'id')
to_plot
#> # A tibble: 12 x 4
#> n id channel position
#> <int> <dbl> <chr> <chr>
#> 1 1 1 direct FT
#> 2 1 1 SEM LC
#> 3 1 1 email OC
#> 4 1 1 video CW
#> 5 2 2 SEM FT
#> 6 2 2 Video LC
#> 7 2 2 Event OC
#> 8 2 2 Email CW
#> 9 2 3 SEM FT
#> 10 2 3 Video LC
#> 11 2 3 Event OC
#> 12 2 3 Email CW
ggplot(to_plot, aes(x=position, y=channel, group=id, color = n)) +
geom_line()