我们可以在seqtreedis()函数调用中更改图像的分辨率吗?

时间:2018-03-20 07:36:11

标签: r traminer

我使用R软件包TraMineR中的seqtreedis()函数生成树图像,但默认分辨率为72 dpi。我需要创建300 dpi图像。可以在seqtreedis()函数调用中使用类似“res”参数吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可以通过传递seqtreedisplay参数(将被视为device.args列表的元素)来控制...函数生成的输出文件的分辨率。

device.args参数应该是将传递给使用过的设备的参数列表(jpeg时为image.format="jpg",否则为png

要获得300 dpi的分辨率,您需要设置res=300,同时增加widthheight

我用mvad数据说明:

data(mvad)
## Defining a state sequence object
mvad.seq <- seqdef(mvad[, 17:86])

## Growing a seqtree using Hamming distances:
seqt <- seqtree(mvad.seq~ male + Grammar + funemp + gcse5eq + fmpr + livboth,
                data=mvad, R=1000, pval=0.05, seqdist.arg=list(method="HAM"))

## Generating the plot as a 300 dpi image in mytree.jpg
seqtreedisplay(seqt, filename = "mytree.jpg", type="d", border=NA, image.format = "jpg", 
      device.args=list(width=480*300/72, height=480*300/72, res=300))

以下是我以前的答案无效,因为seqtreedisplay内部首先以位图格式生成文本和绘图,然后将其保存在image.format中。

解决方案是为seqtreedisplay的结果选择矢量格式(例如pdf或eps),然后将此矢量文件转换为具有所需分辨率的光栅格式。

假设您已安装ImageMagickGostscript依赖ImageMagick转换为pdf或eps的转换,您可以使用convert.g TraMineRextras函数1}}用于此转换。我使用mvad数据说明如下:

## Drawing the tree as a pdf file and converting into jpeg
seqtreedisplay(seqt, filename = "mytree.pdf", type="d", border=NA, image.format = "pdf")
path <- getwd() ## retrieve the path
convert.g(path = path, fileroot = "mytree", from = "pdf", to = "jpeg",
          options = "-units PixelsPerInch -density 300x300")

生成的jpeg文件将位于当前文件夹的jpeg子目录中。