use*_*275 3 visualization r graphviz bioconductor graph-visualization
我正在尝试绘制Rgraphviz带有两个边缘标签的对象。不幸的是,标签不属于情节。这是我的示例:
require('Rgraphviz')
set.seed(123)
g1 <- randomGraph(letters[1:10], 1:4, 0.4)
eAttrs <- list()
eAttrs$label <- c("a~g" = "I have a very long label 1", "a~i" = "and a long label 2")
plot(g1, edgeAttrs = eAttrs)
Run Code Online (Sandbox Code Playgroud)
这是我的情节:

我尝试了几项都没有成功:
1. 设置更大的边框
z <- agopen(g1, "foo")
z@boundBox@upRight@x <- z@boundBox@upRight@x + 300
z@boundBox@upRight@y <- z@boundBox@upRight@y + 300
plot(z, edgeAttrs = eAttrs)
Run Code Online (Sandbox Code Playgroud)
2. 减小标签的字体大小(无论如何,这并不是我真正想要的)
eAttrs$labelfontsize=c("a~g"="3")
plot(g1, edgeAttrs = eAttrs)
Run Code Online (Sandbox Code Playgroud)
3.
更改par属性:
par(oma=c(10,10,10,10))
plot(g1, edgeAttrs = eAttrs)
Run Code Online (Sandbox Code Playgroud)
4.从以下位置
更改节点,边和常规属性?Rgraphviz::GraphvizAttributes
attrs <- list(graph=list(size=c(1, 1)))
attrs$edge$fontsize<-8
plot(g1, edgeAttrs = eAttrs, attrs=attrs)
Run Code Online (Sandbox Code Playgroud)
我的尝试似乎都无效。有人有主意吗?
调用plot()一个上graph对象调度S4方法(通过示出getMethod("plot", "graph")),后者又调用由打字所示的函数getMethod("plot", "Ragraph")。该函数包含以下非常不幸的行,无论您进行了任何相关的参数设置如何,这些行都会覆盖它们以将左右边距重置为0。
oldpars <- par(mai = c(sheight, 0, mheight, 0))
on.exit(par(oldpars), add = TRUE)
Run Code Online (Sandbox Code Playgroud)
一种解决方法是构造一个三块面板layout,左右面板正好位于其中,以提供一些缓冲空间。关闭剪辑,graph在中间面板中绘制对象,然后它似乎可以工作:
layout(matrix(1:3, nrow=1), widths=c(1,5,1))
par(xpd=NA) ## turn off all clipping
plot.new() ## blank plot in Panel 1
plot(g1, edgeAttrs = eAttrs) ## graph in Panel 2
plot.new() ## blank plot in Panel 3
Run Code Online (Sandbox Code Playgroud)
