2012-06-30 19 views
6

si hago un gráfico g:igraph ejes parcela ylim xlim incorrectamente

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 la matriz de coordenadas:

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

I puede trazar la gráfica con posiciones de nodo de acuerdo con las coordenadas personalizados y ejes de la trama .

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

graph with wrong axes

Pero los límites XAXIS no funcionan correctamente y creo que son alterados por eje Y límites. ¿Cómo puedo controlar el eje x que como yo quiero, por ejemplo, manteniéndola entre 0 y 1.

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

Es esto un error? Si es así y esto no se puede resolver, ¿hay otro paquete que tenga la misma funcionalidad?

Respuesta

16

La respuesta corta es, es necesario establecer el argumento asp de la llamada para trazar a 0 como el valor predeterminado es asp = 1 que produce el comportamiento que se observa (es decir, no es un error, es una característica). La respuesta larga con explicación sigue.


Como habrá notado correctamente, xaxis varía según la yaxis. Específicamente, el eje x tiene approxamitely la misma distancia entre los números altos y bajos como yaxis:

  • Si yaxis = c(0,6), el eje x va de -3 a 4. 6 - 0 = 6 y 4 - (-3) = 7
  • Si yaxis = c(0,3), la x eje va de -1 a 2. 3 - 0 = 2 - (-1) = 3

Igraph parece mantener una relación constante entre los ejes.

Si llama ?plot.igraph (la función de trazado llamada con un objeto igraph, también se pueden encontrar a través de help(package = "igraph")), se encuentra bajo See Also:

igraph.plotting para la descripción detallada de las parámetros de trazado

Y si hace clic en este enlace (o llame al ?igraph.plotting) y vaya a través de los parámetros, encontrará:

asp Constante numérica, le da el parámetro asp para el gráfico, la relación de aspecto. Suministre 0 aquí si no desea dar una relación de aspecto.
Es ignorado por tkplot y rglplot.

predeterminados a 1.

Por lo tanto el parámetro aspecto asp defecto a 1 en igraph.Si desea otra relación, configurarlo para que 0:

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

esto responda a su pregunta. Sin embargo, tenga en cuenta que los puntos ahora son bastante grandes. Es probable que desee jugar con los parámetros siguientes (que se encuentra en ?igraph.plotting pero tenga en cuenta que muchos de los parámetros deben ser prefijado por vertex. como se ha hecho por mí):

  • vertex.size por defecto es 15, 5 parece mejor
  • vertex.label.cex El valor predeterminado es 1, 0,8 parece mejor.

El siguiente produce un gráfico más agradable:

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

Cuestiones relacionadas