首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mvbutils R-package食品网图中的控制图布局

mvbutils R-package食品网图中的控制图布局
EN

Stack Overflow用户
提问于 2017-10-24 12:00:50
回答 2查看 290关注 0票数 2

我想想象一下我自己的R包中的函数是如何相互依赖的。为此,我使用了来自foodweb()包的mvbutils函数。

我可以在没有问题的情况下获得正确的函数依赖关系,但是图看起来有点混乱,直线相交,函数名没有垂直或水平对齐。

是否有一种方法可以类似于igraph包的工作方式来控制绘图的布局?

示例

代码语言:javascript
复制
dirPath <- "~/dev/stackoverflow/46910042"
setwd(dirPath)

## Download example Package
urlPackage <- "https://github.com/kbroman/qtlcharts/archive/master.zip"
download.file(urlPackage, destfile = "master.zip")
unzip("./master.zip", exdir = dirPath, overwrite = TRUE)

## Install or load mcbutils
if (!require(mvbutils)) install.packages("mvbutils")
thefiles = list.files(path = "./qtlcharts-master/R/", full.names = TRUE)
thefiles
## Now we load all the package files into memory, so we can have 
## foodweb generate a map of the package functions.
sapply(thefiles, source)

## Generate plot 
par(mar = rep(0.1, 4))
foodweb(border = TRUE, boxcolor = "pink", lwd = 1.5, cex = 0.8)

地块输出:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-03 16:36:01

迈克尔,

一种选择是在食物网的窗帘后面看一看。mvbutils::foodweb函数返回(S3)类foodweb的对象。这包括三个组成部分:

  • funmat由0和1组成的矩阵,表示什么(行)称为什么(列)。这些名称是函数名。
  • x以par("usr")单位表示显示中每个函数名称中心的x轴位置。
  • 以par("usr")单元在显示中显示每个函数名称中心的y轴位置。

因此,我们可以采取的一种方法是调用foodweb,但告诉它不要创建一个绘图,而是返回一个foodweb对象。这样我们就可以操纵数据目录或通过graphics::plot()外部操作mvbutils::foodweb()函数提供的缺省值。

为什么?,好吧,要做你认为我感觉是有三种选择的事情:

  • 您可以使用mvbutils::foodweb()参数。
  • 使用另一个绘图包返回的数据结构。
  • 使用graphics::par()graphics::plot操作返回的foodweb结构的绘图大小和属性。

很高兴知道你的喜好。不包括,我的意思是提供一个基本的例子:

绘图包示例

在使用graphics::plot的情况下,您需要看看如何操作graphics:parpar()允许您设置或查询图形参数。例如,如果要清理函数图,可以选择修改grahics::par() fin参数,以增加图形区域维度(宽度、高度)(以英寸为单位)。一个简单的例子,但我的感觉,它有助于地图和演示可供您使用的选项。

代码语言:javascript
复制
## Generate plot
if (!require(qtlcharts)) install.packages("qtlcharts")

## Here we specify `asNamespace` to get the package internals
fw <- foodweb( where = asNamespace( "qtlcharts"),
               plotting = FALSE,
               )
#Display foodweb structure
str(fw)

# Expand plot figure region dimensions...
par(fin = c(9.9,7))
# Plot fw strucuture
plot(fw, 
     border = TRUE, 
     expand.xbox = 1,
     boxcolor = "pink", lwd = 1.5, cex = 0.8)

图输出示例

请注意,函数名没有分隔开。注意,我在这里剪下了图的顶部和底部的白色。在这种情况下,您可以使用par约束,如保证金,以获得您想要的情节。

修剪你的阴谋

mvbutils::foodweb约束中的另一个选项是使用prunerprune选项来简化您的情节。这些都是超级强大和有用的,特别是正则表达式版本。

代码语言:javascript
复制
if (!require(qtlcharts)) install.packages("qtlcharts")
fw <- foodweb( where = asNamespace( "qtlcharts"),
               plotting = FALSE)

str(fw)
par(fin = c(9.9,7))
plot(fw, 
     border = TRUE, 
     expand.xbox = 1,
     boxcolor = "pink", lwd = 1.5, cex = 0.8)

fw <- foodweb( where = asNamespace( "qtlcharts"),
               rprune = "convert_", ## search on `convert_` to negate use `~convert_`
               plotting = FALSE)
str(fw)
par(fin = c(9.9,7))
plot(fw, 
     border = TRUE, 
     expand.xbox = 1,
     boxcolor = "pink", lwd = 1.5, cex = 0.8)

希望上面的信息能为你指明正确的方向。在T。

票数 1
EN

Stack Overflow用户

发布于 2017-11-03 11:19:22

由于有大量的数据,连接等,情节被压缩,以适应屏幕,因此它变得凌乱。

我的建议是把它保存在一个PDF或PNG的足够大的宽度和高度,然后你可以放大。这会帮你节省很多时间。例如:

代码语言:javascript
复制
## Generate plot 
pdf( "mygraph.pdf", width = 50, height = 80 )
par(mar = rep(0.1, 4))
foodweb(border = TRUE, boxcolor = "pink", lwd = 1.5, cex = 0.8)
dev.off()

此外,您还可以使用foodweb的绘图选项。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46910042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档