如何根据人体的GIF在R中制作热图?

use*_*366 3 r data-visualization heatmap

我有一个人体的GIF,需要在上面绘制热图.要使用的数据在R中

我已经找到了如何导入gif的说明,但它是我的数据到我不确定的gif.

我认为我需要首先将gif放在网格上,然后得到一些坐标,然后将数据分配给相关的坐标?

例如,如果头部位于(5,10),胃部位于(5,5),右侧膝盖位于(4,3)等位于网格上.

是否有人们使用这个包,或者它只是一个严格在R中编程而没有包的任务?或者你使用其他资源?

Nic*_*icE 7

如果您找到可以使用的SVG图像,您还可以使用该grImport包以XML格式转换文件,然后使用R进行修改.

例如,如果要使用此文件,可以fill使用Illustrator/Gimp或其他任何内容向图像添加一些形状,然后使用grImport以下方法将其转换为XML:

library(grImport)
PostScriptTrace("yourimage.ps")
Run Code Online (Sandbox Code Playgroud)

这将创建一个yourimage.ps.xml文件.如果需要,可以修改idsXML中的填充路径节点,以便更轻松地访问它们以更改颜色.

例如,我在SVG文件上创建了14个正文部分,并将其ID更改为名称而不是数字,您可以在此处找到XML: 带有bodyparts XML的人类SVG

要更改bodyparts的颜色,您只需更改节点的rgb一部分fill:

library(grImport)
library(XML)
library(gridExtra)

#function to change the rgb color of the xml paths
changeColor<-function(bodypart,color){
        node<-xpathSApply(doc, paste("//path[@id='",bodypart,"']/context/rgb",sep=""))[[1]]
        rgbCol<-col2rgb(color)
        xmlAttrs(node)["r"]=rgbCol[1]/255
        xmlAttrs(node)["g"]=rgbCol[2]/255
        xmlAttrs(node)["b"]=rgbCol[3]/255
}

#read the xml image
doc<-xmlParse("Human_body_front_and_side.ps.xml")

#these are the different parts you can change
bodyparts<-c("head","hand-right","hand-left","foot-left","foot-right","lowerleg-left","lowerleg-right",
            "upperleg-left","upperleg-right","torso","forearm-right","forearm-left","upperarm-right","upperarm-left")

#color the bodyparts with random color
mapply(function(x,y){changeColor(x,y)},bodyparts,sample(colours(), 14))


#load the XML as a picture
body<-readPicture(saveXML(doc))

#plot it
grid.arrange(pictureGrob(body), ncol=1)
Run Code Online (Sandbox Code Playgroud)

我得到这样的东西:

在此输入图像描述