如果我制作图表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限制改变的。我如何以他想要的方式控制x轴,例如将其保持在0和1之间。
即。 plot(x,y,xlim=c(0,1),ylim=c(0,6))
这是一个错误吗?如果是,并且这无法解决是否有另一个具有相同功能的包?
答案 0 :(得分:18)
简短的回答是,您需要将调用的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。
因此,在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)