为许多不同的图创建leaflet.minicharts弹出标签

时间:2019-02-13 21:29:21

标签: r dplyr r-leaflet

我正在使用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: Display several data rows in popup),我发现标签格式应如下:

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 个答案:

答案 0 :(得分:0)

我认为这可能可以解决问题,当然,可以进行一些小的更改:

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