Введите координаты в tkplot() или используйте стрелки tkplot в plot.igraph()
Есть ли способ передать матрицу координат в функцию tkplot в igraph? Я попытался установить аргумент макета для моей матрицы координат, но он просто создает пустой график.
Я могу передать координаты в plot.igraph() и создать ориентированный, взвешенный контур с вершинами в тех местах, где я их хочу. НО, стрелки в стиле фанк. Стрелки расположены под краями, так что если край достаточно широкий (некоторые из них мои), то стрелка, по крайней мере, частично скрыта. Я пытался изменить ширину ребра и стрелки, но некоторые из моих ребер слишком сильно взвешены. Стрелки, созданные в tkplot, ближе к тому, что я хочу.
Первый график ниже соответствует нежелательным стрелкам, созданным с помощью plot.igraph. Второй сюжет для нужных стрелок из ткплота.
Стрелки я не хочу:
Стрелки я хочу:
Причина, по которой мне нужно сделать одно или другое, заключается в том, что мне нужно сделать еще несколько таких графиков с узлами в одном и том же месте, и я не хочу продолжать использовать tkplot для ручного перемещения узлы вокруг каждый раз. У меня их совсем немного, и я также не смогу получить их в том же положении, что и раньше.
Надеюсь, это достаточно конкретно. Это моя первая публикация, поэтому, пожалуйста, дайте мне знать, какую другую информацию я должен включить. Я попытался дать координаты tkplot на R 2.15 и на машине под управлением 2.11, а также с пакетом igraph 0.5.5 и igraph 0.6.5.
Очень жаль тратить время, если это где-то там. Я потратил некоторое время на поиски, а также пытался соединить головы с моим выпускником, чтобы понять это, и мы уже несколько дней зашли в тупик. Спасибо за любые отзывы.
1 ответ
К сожалению, невозможно изменить внешний вид стрелок, и я согласен, что это отстой, особенно потому, что они безобразны.
Чтобы быть немного более конструктивным, вы могли бы использовать tkplot()
для создания графиков вы можете автоматизировать сохранение их в файлы, используя некоторые приемы и используя внутреннюю функцию igraph. Вот пример ниже. Это достаточно хорошо?
library(igraph)
set.seed(1)
g <- graph.star(10, center=10) %u% graph.ring(9, directed=TRUE)
E(g)$width <- sample(1:10, ecount(g), replace=TRUE)
lay <- layout.auto(g)
id <- tkplot(g, layout=lay)
tkp <- igraph:::.tkplot.get(id)
tkpostscript(tkp$canvas, file="/tmp/output.eps")
tkplot.close(id)