8

如果我制作图表g

g <- read.table(text="

 A  B   W

 1  55  3
 2  55  5
 3  99  6 ",header=TRUE)

library(igraph)
g <- graph.data.frame(g)

和坐标矩阵:

y<-1:5
x<-c(0.1,0.1,0.2,0.2,0.8)
l<-data.frame(x,y)
l<-as.matrix(l)

我可以根据自定义坐标和绘图轴绘制带有节点位置的图形。

plot(g,layout=l,rescale=F,axes=TRUE,ylim=c(0,6),xlim=c(0,1))

带有错误轴的图形

但是 xaxis 限制不能正常工作,我认为会被 yaxis 限制改变。如何控制我想要的 xaxis,例如将其保持在 0 和 1 之间。

IE plot(x,y,xlim=c(0,1),ylim=c(0,6))

这是一个错误吗?如果是并且无法解决,是否还有另一个具有相同功能的软件包?

4

1 回答 1

22

简短的回答是,您需要将asp调用的参数设置为 plot0为默认值asp = 1,它会产生您看到的行为(即,它不是错误,而是功能)。带有解释的长答案如下。


正如您正确注意到的那样,xaxis根据yaxis. 具体来说,x 轴的高数和低数之间的距离与 大致相同yaxis

  • 如果yaxis = c(0,6),则 x 轴从 -3 变为 4。6 - 0 = 6并且4 - (-3) = 7
  • 如果yaxis = c(0,3),则 x 轴从 -1 变为 2。3 - 0 = 2 - (-1) = 3

Igraph 似乎在轴之间保持恒定的比率。

如果你调用?plot.igraph(使用igraph对象调用的绘图函数,也可以通过 找到help(package = "igraph")),你会在下面找到See Also

igraph.plotting有关绘图参数的详细说明

如果您单击此链接(或调用?igraph.plotting)并查看参数,您会发现:

asp一个数字常数,它给出了绘图的 asp 参数,即纵横比。如果您不想提供纵横比,请在此处提供 0。
它被 tkplot 和 rglplot 忽略。

默认为 1。

因此 aspect 参数asp默认为1igraph 中。如果您想要另一个比率,请将其设置为0

plot(g,layout=l,rescale=F,axes=TRUE,ylim=c(0,6),xlim=c(0,1), asp = 0)

这回答了你的问题。但是,请注意,这些点现在相当大。您可能想要使用以下参数(可在 上找到,?igraph.plotting但请注意,许多参数需要vertex.像我所做的那样加上前缀):

  • vertex.size 默认为 15,5 似乎更好
  • vertex.label.cex默认为 1,0.8 似乎更好。

以下产生了一个更好的情节:

plot(g,layout=l,rescale=F,axes=TRUE,ylim=c(0,6),xlim=c(0,1), asp = 0, vertex.size = 5, vertex.label.cex = 0.8)

更好的情节

于 2012-07-03T10:29:43.717 回答