igraph轴xlim ylim绘图不正确

use*_*502 7 plot r 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)
Run Code Online (Sandbox Code Playgroud)

和坐标矩阵:

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

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

plot(g,layout=l,rescale=F,axes=TRUE,ylim=c(0,6),xlim=c(0,1))
Run Code Online (Sandbox Code Playgroud)

轴错误的图形

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

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

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

Hen*_*rik 19

简短的回答是,您需要将asp绘图调用的参数设置0为默认值,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)
Run Code Online (Sandbox Code Playgroud)

这回答了你的问题.但请注意,这些要点现在相当大.您可能想要使用以下参数(找到?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)

更好的情节