2015-10-26 106 views
1

所以我正在製作喬丹的互動地圖,以顯示每個省的註冊敘利亞難民。添加的交互性非常簡單;使用add_tooltip,一旦你懸停在一個省,它顯示了難民的姓名和總數。但它不顯示名稱。當我使用打印或格式時,它會顯示'NULL'。可能是什麼原因?ggvis add_tooltip字符變量不會呈現

一個可重複的代碼可以發現如下:

library(choroplethrAdmin1) 
library(choroplethr) 
library(ggvis) 
library(dplyr) 

jor<-get_admin1_map("jordan") 

jor %>% ggvis(~long, ~lat) %>% 
layer_paths(data = jor %>% group_by(group), 
strokeWidth := 0, fill = ~total) %>% 
hide_axis("x") %>% hide_axis("y") %>% 
add_tooltip(function(data){paste("Gov: ", data$name, "<br>", "Total: ", as.character(data$lat))}, "hover") 

回答

2

layer_paths你組由group的數據幀,並使用總的fill,你也可以選擇長,緯度在原始ggvis電話。因此,您進入add_tooltip的數據幀恰好包含那些列,即沒有name列。

的快速檢查結果顯示我有每個組只對應一個名字,你可以看到如下:

> table(jor$group, jor$name) 

     ajlun amman aqaba balqa irbid jarash karak ma`an madaba mafraq tafilah zarqa 
    2009.1  0  0 87  0  0  0  0  0  0  0  0  0 
    2010.1  0  0  0  0  0  0  0  0  0 115  0  0 
    2011.1  0 102  0  0  0  0  0  0  0  0  0  0 
    2012.1  0  0  0  0  0  0  0  0  0  0  67  0 
    2013.1  0  0  0  0  0  0  0 70  0  0  0  0 
    2014.1  0  0  0  0 159  0  0  0  0  0  0  0 
    2015.1 41  0  0  0  0  0  0  0  0  0  0  0 
    2016.1  0  0  0  0  0  42  0  0  0  0  0  0 
    2017.1  0  0  0 80  0  0  0  0  0  0  0  0 
    2018.1  0  0  0  0  0  0  0  0  60  0  0  0 
    2019.1  0  0  0  0  0  0 74  0  0  0  0  0 
    2020.1  0  0  0  0  0  0  0  0  0  0  0 86 

因此,只是改變了組參數name代替組似乎工作。請參見下面的代碼:

#I have added a fake total column 
jor$total <- runif(983) * 100 

與此代碼的工作:

jor %>% ggvis(~long, ~lat) %>% 
    layer_paths(data = jor %>% group_by(name), 
       strokeWidth := 0, fill = ~total) %>% 
    hide_axis("x") %>% hide_axis("y") %>% 
    add_tooltip(function(data){paste("Gov: ", data$name, "<br>", "Total: ", as.character(data$lat))}, "hover") 

enter image description here

其實,我認爲,總的列實際上是lat列在你的情況(從as.character(data$lat)) judjing那你寫在add_tooltip)在這種情況下做

jor %>% ggvis(~long, ~lat) %>% 
    layer_paths(data = jor %>% group_by(name), 
       strokeWidth := 0, fill = ~lat) %>% 
    hide_axis("x") %>% hide_axis("y") %>% 
    add_tooltip(function(data){paste("Gov: ", data$name, "<br>", "Total: ", as.character(data$lat))}, "hover") 
無論如何,

都可以工作。

+0

哦,只是注意你幾分鐘前在那裏。 +1 –

+0

@StevenBeaupré不用擔心,2分鐘是不是真的有足夠的時間無論如何不張貼一個答案因爲你在發佈結束時。這不是剽竊或任何東西:) – LyzandeR

+0

@LyzandeR非常感謝你!對不起,我錯過了總計,但我想這是凌晨2點,我在連續修改代碼4小時後發佈了這個消息。 – cad86