2012-06-30 3 views
6

если я граф g:igraph осей xlim ylim участок неверно

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 пределов. Как я могу контролировать XAxis они, как я хочу, например, держа его между 0 и 1.

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

Является ли это ошибка? Если это так, и это невозможно решить, есть ли другой пакет, который будет иметь одинаковую функциональность?

ответ

16

Короткий ответ, вы должны установить asp аргумент вызова для построения в 0, как по умолчанию asp = 1 которое производит поведение, которое вы видите (то есть, это не ошибка, это особенность). Далее следует длинный ответ с объяснением.


Как вы правильно заметили, xaxis варьируется в зависимости от yaxis. В частности, ось й имеет approxamitely такое же расстояние между высокими и низкими числами как yaxis:

  • Если yaxis = c(0,6), ось й идет от -3 до 4. 6 - 0 = 6 и 4 - (-3) = 7
  • Если yaxis = c(0,3), х -axis идет от -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.

Следовательно, параметр аспект asp по умолчанию 1 в igraph.Если вы хотите другое отношение, установите его в 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

Смежные вопросы