图像拼贴树状图看起来像

Image collage treemap look a like

我需要导入多张图片并像拼贴画一样呈现输出。我在想做一个树形图,将图像大小映射到角色的分数。

df <- data.frame(character=c("Homer","Marge", "Bart", "Lisa","Maggie", "Moe", "Blinky","Bumblebee Man","Duffman","Maude Flanders","Ned Flanders","Rod Flanders","Todd",Jimbo","Otto Mann","Snowball"),score=c(268,267,495, 432, 219, 373, 152, 356, 461, 116,107,165, 305,228, 461, 608))

我之前使用过 treemap 和 ggplot geom_tile 但我不确定是否可以在图块中生成图片。我什至不知道如何将图像插入到我的数据框中进行绘图...

不是真正的答案,而是快速演示如何开始完成任务。

    library(treemap)
    library(gridSVG)
    library(XML)

    df <- data.frame(
        character=c("Homer","Marge", "Bart", "Lisa","Maggie", "Moe", "Blinky","Bumblebee Man","Duffman","Maude Flanders","Ned Flanders","Rod Flanders","Todd","Jimbo","Otto Mann","Snowball")
        ,score=c(268,267,495, 432, 219, 373, 152, 356, 461, 116,107,165, 305,228, 461, 608)
    )

    tm <- treemap( df, index = "character", vSize = "score" )

    svg <- grid.export()$svg

    # see 
    pattern <- newXMLNode(
        "defs"
        ,.children = list(
            newXMLNode(
                "pattern"
                , attrs = c(
                    id = "img_homer"
                    ,patternUnits="userSpaceOnUse"
                    ,patternTransform="translate(0, 0) scale(1, -1) rotate(0)"
                    ,width="106"
                    ,height="98"
                )
                , .children = newXMLNode(
                    "image"
                    , attrs = c(
                        "xlink:href" = "http://i.imgur.com/JP4s21O.jpg"
                        ,width = 106
                        ,height = 80
                    )
                )
            )
        )
    )

    addChildren( svg, pattern )

    homer <- getNodeSet(
        getNodeSet( svg, "//*[contains(@id,'data.2')]")[[1]]
        ,"//*[local-name()='rect']"
    )[[5]]

    homer_attrs <- xmlAttrs(homer)
    homer_attrs[["fill"]] <- "url(#img_homer)"
    xmlAttrs(homer) <- homer_attrs

    library(htmltools)
    browsable(HTML(saveXML(svg)))