оси igraph xlim ylim строятся неправильно

если я сделаю график 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))

график с неверными осями

Но ограничения по оси x не работают должным образом, и я думаю, что они изменяются ограничениями по оси y. Как я могу контролировать ось x так, как я хочу, например, сохраняя ее между 0 и 1.

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

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


person user1320502    schedule 30.06.2012    source источник


Ответы (1)


Короткий ответ: вам нужно установить аргумент 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.

Следовательно, параметр аспекта 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)

более приятный сюжет

person Henrik    schedule 03.07.2012