igraph轴xlim ylim绘图不正确

时间:2012-06-30 07:33:20

标签: r plot igraph

如果我制作图表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))

graph with wrong axes

但是xaxis限制功能不正常,我认为是由yaxis限制改变的。我如何以他想要的方式控制x轴,例如将其保持在0和1之间。

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

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

1 个答案:

答案 0 :(得分:18)

简短的回答是,您需要将调用的asp参数设置为0,因为默认值为asp = 1,这会产生您看到的行为(即,它不是一个错误,这是一个功能)。下面给出解释的长答案。


正如您所注意到的,xaxisyaxis而异。具体来说,x轴在高位数和低位数之间的距离大致相同yaxis

  • 如果yaxis = c(0,6),则x轴从-3变为4. 6 - 0 = 64 - (-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。

因此,在igraph中,方面参数asp默认为1。如果您想要其他比率,请将其设置为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)

nicer plot