如何使用圆形布局在 Netlogo 中可视化两个(或更多)子网
How to visualize two (or more) subnetworks in Netlogo using circle layout
我想知道是否可以可视化两个不同的子网络(例如,由白色海龟组成,另一个由橙色海龟组成)以及它们之间的一些链接。
例如,在视觉上,它们应该看起来像两个具有布局圆圈 (layout-circle
) 的网络。
目前我只能想象一个由橙色和白色海龟组成的网络(给你一个想法:https://www.dreamstime.com/royalty-free-stock-photos-people-join-merge-social-two-circles-as-network-business-groups-image30895498)。
任何帮助都会很棒。
谢谢。
下面显示了我正在尝试执行的操作的示例。
to WS [N k p]
create-types1 N [
set color white
setxy random-xcor random-ycor
]
create-types2 N [
set color orange
setxy random-xcor random-ycor
]
layout-circle sort types1 max-pycor * 0.9
let lis (n-values (k / 2) [ [i] -> i + 1 ])
ask types1 [
let w who
foreach lis [ [i] -> create-link-with (type1 ((w + i) mod N)) ]
]
rewire p
end
to rewire [p]
ask links [
let rewired? false
if (random-float 1) < p
[
let node1 end1
if [ count link-neighbors ] of node1 < (count types1 - 1)
[
let node2 one-of types1 with [ (self != node1) and (not link-neighbor? node1) ]
ask node1 [ create-link-with node2 [ set rewired? true ] ]
]
]
if (rewired?)
[
die
]
]
end
上面的代码应该创建一个小世界网络,其中有两种类型的品种:type1
和 type2
,以颜色区分。
我不想在同一个网络中可视化类型,而是想为 type1 创建一个小世界网络,为 type2 创建另一个小世界网络。这两个网络将通过两个类型之间可能存在的一些链接链接起来。
您是否正在寻找类似的东西?
我分别创建了两个圆圈,然后将它们移动到所需的位置,并分别为这两种类型创建了链接。
breed [types1 type1]
breed [types2 type2]
to WS [N k p]
create-types1 N [
set color white
]
create-types2 N [
set color orange
]
layout-circle sort types1 max-pycor * 0.5
ask types1 [setxy xcor - 5.5 ycor]
layout-circle sort types2 max-pycor * 0.5
ask types2 [setxy xcor + 5.5 ycor]
let lis (n-values (k / 2) [ [i] -> i + 1 ])
ask types1 [
let w who
foreach lis [ [i] -> create-link-with (type1 ((w + i) mod N)) ]
]
;let links1 link-set [my-links] of types1
ask types2 [
let w who
foreach lis [ [i] -> create-link-with (type2 ((w + i) mod N + N)) ]
]
;let links2 link-set [my-links] of types2
end
我想知道是否可以可视化两个不同的子网络(例如,由白色海龟组成,另一个由橙色海龟组成)以及它们之间的一些链接。
例如,在视觉上,它们应该看起来像两个具有布局圆圈 (layout-circle
) 的网络。
目前我只能想象一个由橙色和白色海龟组成的网络(给你一个想法:https://www.dreamstime.com/royalty-free-stock-photos-people-join-merge-social-two-circles-as-network-business-groups-image30895498)。
任何帮助都会很棒。 谢谢。
下面显示了我正在尝试执行的操作的示例。
to WS [N k p]
create-types1 N [
set color white
setxy random-xcor random-ycor
]
create-types2 N [
set color orange
setxy random-xcor random-ycor
]
layout-circle sort types1 max-pycor * 0.9
let lis (n-values (k / 2) [ [i] -> i + 1 ])
ask types1 [
let w who
foreach lis [ [i] -> create-link-with (type1 ((w + i) mod N)) ]
]
rewire p
end
to rewire [p]
ask links [
let rewired? false
if (random-float 1) < p
[
let node1 end1
if [ count link-neighbors ] of node1 < (count types1 - 1)
[
let node2 one-of types1 with [ (self != node1) and (not link-neighbor? node1) ]
ask node1 [ create-link-with node2 [ set rewired? true ] ]
]
]
if (rewired?)
[
die
]
]
end
上面的代码应该创建一个小世界网络,其中有两种类型的品种:type1
和 type2
,以颜色区分。
我不想在同一个网络中可视化类型,而是想为 type1 创建一个小世界网络,为 type2 创建另一个小世界网络。这两个网络将通过两个类型之间可能存在的一些链接链接起来。
您是否正在寻找类似的东西? 我分别创建了两个圆圈,然后将它们移动到所需的位置,并分别为这两种类型创建了链接。
breed [types1 type1]
breed [types2 type2]
to WS [N k p]
create-types1 N [
set color white
]
create-types2 N [
set color orange
]
layout-circle sort types1 max-pycor * 0.5
ask types1 [setxy xcor - 5.5 ycor]
layout-circle sort types2 max-pycor * 0.5
ask types2 [setxy xcor + 5.5 ycor]
let lis (n-values (k / 2) [ [i] -> i + 1 ])
ask types1 [
let w who
foreach lis [ [i] -> create-link-with (type1 ((w + i) mod N)) ]
]
;let links1 link-set [my-links] of types1
ask types2 [
let w who
foreach lis [ [i] -> create-link-with (type2 ((w + i) mod N + N)) ]
]
;let links2 link-set [my-links] of types2
end