Я не уверен, что это правильный ответ на ваш вопрос, но я не думаю, что вам нужно указывать gravity multiplier
в вашей команде layoutNetwork
. Я не проверял подробно алгоритм Fruchterman-reingold
, но, как я понимаю ваш вопрос, вы хотите применить тот же алгоритм между igraph
и Cytoscape
.
Для этого я сначала взгляну на параметры, передаваемые по умолчанию в функцию layout.fruchterman.reingold
, которая в основном вызывает функцию layout_with_fr
(написал layout_with_fr
в консоли R для просмотра параметров функции).
Проверяя код этой функции, вы можете видеть, что в зависимости от того, как вы ее пишете, задаются только два параметра. Первая - это число итераций (по умолчанию установлено 500), а вторая - начальная температура (start.temp равно значению vcount вашего графика). Итак, здесь start.temp = sqrt(5)
.
Затем вы можете проверить атрибуты алгоритма Fruchterman-reingold
в Cytoscape, используя:
getLayoutPropertyNames("fruchterman-rheingold")
[1] "Available arguments for 'layout fruchterman-rheingold':"
[1] "attraction_multiplier" "conflict_avoidance" "defaultEdgeWeight"
[4] "edgeAttribute" "gravity_multiplier" "layout3D"
[7] "max_distance_factor" "maxWeightCutoff" "minWeightCutoff"
[10] "network" "nIterations" "nodeAttribute"
[13] "nodeList" "randomize" "repulsion_multiplier"
[16] "singlePartition" "spread_factor" "temperature"
[19] "type" "update_iterations"
Итак, я думаю, исходя из вашего примера, мы должны использовать только nIterations
и temperature
аргументы:
createNetworkFromIgraph(ig,"myIgraph")
setNodeShapeDefault("ELLIPSE")
setNodeSizeDefault(30)
setNodeColorMapping("gender", c("F","M"), c( "#E41A1C", "#377EB8"), mapping.type = "d")
setLayoutProperties("fruchterman-rheingold",
list(nIterations=500,
temperature = sqrt(5)))
layoutNetwork("fruchterman-rheingold")
И вы получите такое представление:
Опытным путем я обнаружил, что если вы используете gravity_multiplier=1
, вам нужно также передайте аргумент repulsion_multiplier = 1
, чтобы компенсировать и сделать вашу сеть более привлекательной.
Надеюсь, это поможет вам найти решение вашего вопроса.