基于路径频率的线条比例颜色
问题描述:
我试图绘制出人们在参与我们的营销内容时所采用的路径。基于路径频率的线条比例颜色
我对所有的营销互动数据(链接点击等),他们的“销售渠道”,他们的“接合位置”
啮合位置有以下几种:第一触摸[他们曾经与参与第一次我们],领导创造[当他们填写表格并给我们足够的信息],机会创造[在创造机会之前发生的接触],并且封闭赢得[在他们签署和购买之前发生的接触]
我实际上成功地映射了路径,但是问题出在14通道和100k +个体路径上,结果图表非常不可读。
由于这个原因,我想根据整个路径的出现频率来缩放线条的颜色。
这是格式i的具有数据:
______________________________
| 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标识)取决于整个路径的频率。所以我不想让它告诉我什么是LC最常见的FT,然后是最常见的LC到OC等 - 我希望它显示最常见的完整路径。
这里是一个什么样的数据看起来像我当前的代码示例:
这是使用此代码创建:
ggplot(tblp, aes(x=position, y=channel, group=id)) +
geom_line(alpha=.01, size=.5)
所以现在我需要做的就是图根据整个路径的频率来改变色阶的方法。这是否需要不同的数据帧设置?
任何帮助表示赞赏。
答
您的数据目前的结构使路径上的每个点都是一行;要衡量路径的频率,您需要重新整理数据,以便每个整个路径都是一行,然后将摘要数据加回到当前数据格式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()
传奇!我会给这个镜头并报告 - 看起来应该是我需要的! –
有没有办法改变频率上的不透明度? –
添加阿尔法你的审美映射;从上面的代码中,'aes(...,alpha = n)' – zlipp