2012-06-30 13 views
6

se faccio un grafico g:igraph assi trama ylim XLIM erroneamente

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) 

e matrice di coordinate:

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

posso tracciare il grafico con le posizioni di nodo secondo coordinate personalizzati e assi trama .

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

graph with wrong axes

Ma i limiti asseX non funzionano correttamente e penso che sono modificate di asseY limiti. Come posso controllare il xaxis che modo desiderato, per esempio tenendolo tra 0 e 1.

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

Si tratta di un bug? Se è e questo non può essere risolto c'è un altro pacchetto che avrebbe la stessa funzionalità?

risposta

16

La risposta breve è, è necessario impostare l'argomento asp della chiamata per tracciare a 0 come il valore predefinito è asp = 1 che produce il comportamento che si vede (vale a dire, non è un bug, è una caratteristica). Segue la lunga risposta con spiegazione.


Come avrete notato correttamente, xaxis varia a seconda yaxis. Specificamente, l'asse x è approxamitely la stessa distanza tra i numeri di alta e bassa come yaxis:

  • Se yaxis = c(0,6), l'asse x va da -3 a 4. 6 - 0 = 6 e 4 - (-3) = 7
  • Se yaxis = c(0,3), x -axis passa da -1 a 2. 3 - 0 = 2 - (-1) = 3

L'igrea sembra mantenere un rapporto costante tra gli assi.

Se si chiama ?plot.igraph (la funzione di tracciato chiamato con un oggetto igraph, si possono trovare anche via help(package = "igraph")), si trova sotto See Also:

igraph.plotting per la descrizione dettagliata dei complotto parametri

E se si fa clic su questo collegamento (o chiamare ?igraph.plotting) e passare attraverso i parametri che troverete:

asp Una costante numerica, fornisce il parametro asp per il grafico, le proporzioni. Fornisci 0 qui se non vuoi dare un rapporto aspetto.
Viene ignorato da tkplot e rglplot.

default è 1.

qui il parametro aspetto asp default 1 in igraph.Se volete un altro rapporto, impostarlo 0:

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

questo risponde alla tua domanda. Tuttavia, nota che i punti ora sono piuttosto grandi. Probabilmente si vorrà giocare con i seguenti parametri (che si trova sulla ?igraph.plotting ma nota che molti dei parametri devono essere preceduto da vertex. come fatto da me):

  • vertex.size default è 15, 5 sembra meglio
  • vertex.label.cex Il valore predefinito è 1, 0,8 sembra migliore.

Quanto segue produce una trama più bello:

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

Problemi correlati