Создание всплывающих ярлыков leaflet.minicharts для разных графиков

Я использую R leaflet.minicharts для создания графиков для каждого из нескольких входных файлов. Я хотел бы создать пользовательские метки для каждой круговой диаграммы или гистограммы внутри каждого графика мини-диаграммы, но у меня возникли проблемы с кодом.

У меня есть фрейм данных (DF), аналогичный следующему:

    location grp1 grp2 grp3 grp4
1   loc1     1    0    0    0
2   loc2     0    5    0    1
3   loc3     1    0    3    0
4   loc4     0    2    2    2
5   loc5     0    1    0    7

И хотел бы создать всплывающую метку для каждой круговой диаграммы (или столбчатой ​​диаграммы) в каждом графике, который следует этому формату:

loc1
grp1: 1
grp2: 0
grp3: 0
grp4: 0

Основываясь на другом посте ( Leaflet for R: отображать несколько строк данных во всплывающем окне), я вижу, что мой формат метки должен быть следующим:

my_popups <- df %>%
   group_by(location) %>%
   mutate(popup = paste0("<h3>", location,
   paste("grp1:", grp1, "<b>", "grp2:", grp2, "<b>", "grp3:", grp3, "<b>", "grp4:", grp4, "<b>", collapse = "<br>"))) %>%
   pull(popup)

Но как я могу автоматизировать my_popups для создания пользовательских меток для нескольких разных входных файлов, которые будут иметь разные уровни для grp (например, здесь показаны grp1-grp4, но у меня также есть входные данные для grp1-grp5 и т. Д.). Я не хочу вручную вводить "вставлять" часть этого кода для каждого ввода.

Я создал вектор с частью имен столбцов моего фрейма данных следующим образом:

[1] "grp1"     "grp2"     "grp3"     "grp4" 

Я думаю, что должен быть способ вставить это в правильном формате для my_popups, но я не совсем уверен, как поступить. Любые советы будут полезны!

1 ответ

Решение

Я думаю, что это может помочь, возможно, с некоторыми незначительными изменениями:

cols <- colnames(df)     
coln <- cols[grepl("grp", cols)]
coln <- paste0("<b>",coln[2:length(coln)],":" )
coln<-c(coln, "<b>")
df$popup <- apply(df[,-1],1,paste,coln,collapse="") 
df %>% mutate(popup = paste0("<h3>", location,"grp1:", popup))

Несколько небольших настроек, чтобы получить точное форматирование, которое хотел @nrcombs:

cols <- colnames(df)     
coln <- cols[grepl("grp", cols)]
coln <- paste0("<br>",coln[2:length(coln)],": " )
coln<-c(coln, "<br>")
df$popup <- apply(df[,-1],1,paste,coln,collapse="") 
df %>% mutate(popup = paste0("<h3>", location, "</h3><br>", "grp1: ", popup))
Другие вопросы по тегам