Создание всплывающих ярлыков 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))