1

そこで私はヨルダンのインタラクティブ マップに取り組んでおり、行政区域ごとに登録済みのシリア難民を表示しています。追加された対話機能は非常に単純です。add_tooltip を使用して、行政区域にカーソルを合わせると、名前と難民の総数が表示されます。ただし、名前は表示されません。その上で印刷またはフォーマットを使用すると、「NULL」と表示されます。その理由は何ですか?

再現可能なコードを以下に示します。

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")
4

1 に答える 1

2

layer_pathsデータ フレームをグループ化し、合計groupの a を使用し、元の呼び出しfillで long と lat も選択します。ggvisしたがって、入力されるデータ フレームには、add_tooltipそれらの列が正確に含まれます。つまり、name列はありません。

以下に示すように、簡単なチェックで、各グループが 1 つの名前のみに対応していることがわかりました。

> 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したがって、 groupの代わりにgroup 引数を変更するだけでうまくいくようです。以下のコードを参照してください。

#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")

ここに画像の説明を入力

実際、合計列は実際にはlatあなたの場合の列であると思います(as.character(data$lat))あなたが書いていることから判断して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")

とにかく動作します。

于 2015-10-26T23:14:52.317 に答える