使用R中的igraph
包,我遇到了以下意外行为。如果图表的edge.arrow.mode
(在我的情况下是无向的,但没有区别)被指定为3
(或"<->"
,两端都是箭头),而edge.color是使用选项rgb()
指定为alpha < 1
,箭头变为差异颜色。看起来一端有两个箭头,重叠会产生较暗的颜色。
这是不可取的,因为它使图表显示一些箭头比其他箭头更暗(看起来更“重要”)。我试图想象的实际图形是无向的,(所有灰色,半透明)边缘的箭头将仅用于说明特定顶点有多少连接(图形非常大(100-500)顶点),边缘重叠,所以不容易在视觉上确定边连接到顶点的位置;这也是使用半透明边和顶点的原因。)
以下是一些工作示例:
library("igraph")
plot(make_tree(5, mode="undirected"), vertex.size=10, edge.arrow.mode=3, edge.color=rgb(0,0,0,0.2))
plot(make_tree(5, mode="undirected"), vertex.size=10, edge.arrow.mode=3, edge.color=rainbow(5, alpha=0.3))
问题是,是否可以解决这个问题,所以箭头看起来都一样?
也可以考虑以其他方式在视觉上显示顶点连接的数量(最好是“方向”)(但请注意,顶点颜色(全色光谱)已经用于另一个视觉辅助和顶点最重要的是边缘着色会让事情变得太多了。更改顶点形状以指示连接程度也不是一个好的解决方案(编辑 - 感谢Tad)。使所有箭头都成为纯色也是可以的(但似乎没有办法将箭头颜色与边缘颜色分开更改)。
(额外奖励:这是igraph还是igraph的一个特征?)
答案 0 :(得分:0)
您可以根据节点度更改顶点大小吗?
grph <- make_tree(5, mode="undirected")
plot(grph, vertex.size=degree(grph)*5, edge.arrow.mode=0,
edge.color='black')
还可以改变边缘的厚度(edge.width
),这可以给出加权网络中节点强度的概念。但这并不适用。
编辑: 如何更改颜色的alpha通道,以便更透明的节点具有更小的程度?除此之外,我不知所措。将箭放在无向图上似乎是一个坏主意,特别是如果它只是一种可视化节点度的方法。
colShift <- function(x, alpha){
x <- col2rgb(x) / 255
rgb(x[1], x[2], x[3], alpha=alpha)
}
grph <- make_tree(5, mode="undirected") %>%
set_vertex_attr('color', value='dodgerblue4')
vertAlpha <- 1.1 - 1/degree(grph)
vertColor <- colShift(vertex_attr(grph, 'color'), vertAlpha)
V(grph)$color <- vertColor
plot(grph, vertex.size=degree(grph)*5, edge.arrow.mode=0,
edge.color='black')