level 7
houxuanbo
楼主
我想操作的数据类似于
test = RandomInteger[10, {10, 5}];
从列表里筛选出在同一行中出现的数字,只在它们之间连上无向边
edge = (Flatten[
Map[Sort,
Table[{
#[[i, j]], #
[[i, k]]}, {i, 1, # // Length}, {j,
1, (#[[i]] // Length) - 1}, {k, j + 1, #[[i]] // Length}],
3], 2] // DeleteDuplicates) &[DeleteDuplicates /@ test];
除此之外我还想控制不同的边的长度,来控制不同节点之间的距离,我看Graph 有个EdgeWeight选项,但是用了以后边的长度好像也没有什么变化,想请教下各位怎么能控制节点间边的长度呢?
{Graph[test // Flatten // DeleteDuplicates,
Apply[UndirectedEdge, edge, 2], VertexLabels -> "Name",
EdgeWeight -> RandomReal[10, edge // Length]],
Graph[test // Flatten // DeleteDuplicates,
Apply[UndirectedEdge, edge, 2], VertexLabels -> "Name"]}

这两张图是上面那句的输出,左面用随机数设置了EdgeWeight,但是和右图没有设置EdgeWeight输出的图好像差不多,
2019年10月09日 12点10分
1
test = RandomInteger[10, {10, 5}];
从列表里筛选出在同一行中出现的数字,只在它们之间连上无向边
edge = (Flatten[
Map[Sort,
Table[{
#[[i, j]], #
[[i, k]]}, {i, 1, # // Length}, {j,
1, (#[[i]] // Length) - 1}, {k, j + 1, #[[i]] // Length}],
3], 2] // DeleteDuplicates) &[DeleteDuplicates /@ test];
除此之外我还想控制不同的边的长度,来控制不同节点之间的距离,我看Graph 有个EdgeWeight选项,但是用了以后边的长度好像也没有什么变化,想请教下各位怎么能控制节点间边的长度呢?
{Graph[test // Flatten // DeleteDuplicates,
Apply[UndirectedEdge, edge, 2], VertexLabels -> "Name",
EdgeWeight -> RandomReal[10, edge // Length]],
Graph[test // Flatten // DeleteDuplicates,
Apply[UndirectedEdge, edge, 2], VertexLabels -> "Name"]}

这两张图是上面那句的输出,左面用随机数设置了EdgeWeight,但是和右图没有设置EdgeWeight输出的图好像差不多,