2017-10-09 34 views
1

我試圖繪製出人們在參與我們的營銷內容時所採用的路徑。基於路徑頻率的線條比例顏色

我對所有的營銷互動數據(鏈接點擊等),他們的「銷售渠道」,他們的「接合位置」

齧合位置有以下幾種:第一觸摸[他們曾經與參與第一次我們],領導創造[當他們填寫表格並給我們足夠的信息],機會創造[在創造機會之前發生的接觸],並且封閉贏得[在他們簽署和購買之前發生的接觸]

我實際上成功地映射了路徑,但是問題出在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等 - 我希望它顯示最常見的完整路徑。

這裏是一個什麼樣的數據看起來像我當前的代碼示例:

map picture

這是使用此代碼創建:

ggplot(tblp, aes(x=position, y=channel, group=id)) + 
geom_line(alpha=.01, size=.5) 

所以現在我需要做的就是圖根據整個路徑的頻率來改變色階的方法。這是否需要不同的數據幀設置?

任何幫助表示讚賞。

回答

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() 

+0

傳奇!我會給這個鏡頭並報告 - 看起來應該是我需要的! –

+0

有沒有辦法改變頻率上的不透明度? –

+0

添加阿爾法你的審美映射;從上面的代碼中,'aes(...,alpha = n)' – zlipp