根据顶点颜色为图中的边着色
Coloring Edges in graph according to their vertexes color
我在 mathematica 工作并且有一个图表,每个顶点都是不同的颜色,我想给边着色。例如:如果两个顶点的颜色相同,则边将是某种颜色,对于具有此 属性.
的所有边依此类推
一般来说,我怎样才能得到顶点的颜色?
谢谢!
这里是生成图形的方法,假设您可以访问输入:
g = Select[
Union@Table[
RandomInteger[{1, 10}] -> RandomInteger[{1, 10}], {35}],
! Equal @@ # &];
colors = Table[
i -> RandomChoice[ {Red, Blue, Green, Orange} ] ,
{i, (Union@Flatten[List @@@ g])}];
Graph[g,
VertexStyle -> colors,
EdgeStyle -> ((# -> (#[[1]]/.colors )) & /@
Select[g,(#[[1]]/.colors) == (#[[2]]/.colors ) & ]) ]
如果你只有graph对象,需要提取style数据会有点麻烦。
使用 the IGraph/M package 的 属性 映射功能更容易做到这一点。
生成随机颜色的图形:
SeedRandom[1234]
g = RandomGraph[{10, 20},
VertexStyle -> {_ :> RandomChoice[{Orange, Darker@Green, Lighter@Blue}]},
EdgeStyle -> Thick,
VertexSize -> Medium
]
加载包:
<<IGraphM`
做映射:
IGEdgeMap[
If[First[#] === Last[#], First[#], None] &,
EdgeStyle -> IGEdgeVertexProp[VertexStyle],
g
]
解释:
IGEdgeVertexProp[VertexStyle]
是一个函数,提取所有边的端点的VertexStyle,作为一个列表。
IGEdgeVertexProp[VertexStyle][g]
IGEdgeMap[f, prop -> fun, g]
会将函数f
应用于上述列表的每个元素(由fun[g]
返回),并将每个结果存储在边属性中prop
.
我发现这种使用属性的方式对于图形样式、属性 转换、复制属性等来说非常容易。
还有 IGEdgeProp
和 IGVertexProp
分别用于提取边和顶点属性,IGVertexMap
用于将函数映射到顶点属性。
我在 mathematica 工作并且有一个图表,每个顶点都是不同的颜色,我想给边着色。例如:如果两个顶点的颜色相同,则边将是某种颜色,对于具有此 属性.
的所有边依此类推
一般来说,我怎样才能得到顶点的颜色?
谢谢!
这里是生成图形的方法,假设您可以访问输入:
g = Select[
Union@Table[
RandomInteger[{1, 10}] -> RandomInteger[{1, 10}], {35}],
! Equal @@ # &];
colors = Table[
i -> RandomChoice[ {Red, Blue, Green, Orange} ] ,
{i, (Union@Flatten[List @@@ g])}];
Graph[g,
VertexStyle -> colors,
EdgeStyle -> ((# -> (#[[1]]/.colors )) & /@
Select[g,(#[[1]]/.colors) == (#[[2]]/.colors ) & ]) ]
如果你只有graph对象,需要提取style数据会有点麻烦。
使用 the IGraph/M package 的 属性 映射功能更容易做到这一点。
生成随机颜色的图形:
SeedRandom[1234]
g = RandomGraph[{10, 20},
VertexStyle -> {_ :> RandomChoice[{Orange, Darker@Green, Lighter@Blue}]},
EdgeStyle -> Thick,
VertexSize -> Medium
]
加载包:
<<IGraphM`
做映射:
IGEdgeMap[
If[First[#] === Last[#], First[#], None] &,
EdgeStyle -> IGEdgeVertexProp[VertexStyle],
g
]
解释:
IGEdgeVertexProp[VertexStyle]
是一个函数,提取所有边的端点的VertexStyle,作为一个列表。
IGEdgeVertexProp[VertexStyle][g]
IGEdgeMap[f, prop -> fun, g]
会将函数f
应用于上述列表的每个元素(由fun[g]
返回),并将每个结果存储在边属性中prop
.
我发现这种使用属性的方式对于图形样式、属性 转换、复制属性等来说非常容易。
还有 IGEdgeProp
和 IGVertexProp
分别用于提取边和顶点属性,IGVertexMap
用于将函数映射到顶点属性。