作者:钟杰辉_576 | 来源:互联网 | 2023-05-20 19:45
我有一个人体的GIF,需要在上面绘制热图.要使用的数据在R中
我已经找到了如何导入gif的说明,但它是我的数据到我不确定的gif.
我认为我需要首先将gif放在网格上,然后得到一些坐标,然后将数据分配给相关的坐标?
例如,如果头部位于(5,10),胃部位于(5,5),右侧膝盖位于(4,3)等位于网格上.
是否有人们使用这个包,或者它只是一个严格在R中编程而没有包的任务?或者你使用其他资源?
1> NicE..:
如果您找到可以使用的SVG图像,您还可以使用该grImport
包以XML格式转换文件,然后使用R进行修改.
例如,如果要使用此文件,可以fill
使用Illustrator/Gimp或其他任何内容向图像添加一些形状,然后使用grImport
以下方法将其转换为XML:
library(grImport)
PostScriptTrace("yourimage.ps")
这将创建一个yourimage.ps.xml
文件.如果需要,可以修改ids
XML中的填充路径节点,以便更轻松地访问它们以更改颜色.
例如,我在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)
我得到这样的东西: