【发布时间】:2017-11-25 04:36:42
【问题描述】:
这听起来像是问题的一个很小的细节,但是我试图让这个图表看起来尽可能干净,并且感谢任何反馈。我正在为篮球创建 R 网络图。几天前我发表了这篇文章 - Draw beautiful network graphs in R - 显示了我试图模仿的图表类型。
使用 igraph 包,我已经能够重新创建大部分图表。下面的示例,以及我正在使用的数据框:
library(igraph)
nba.nodes <- data.frame(id = c('s01', 's02', 's03', 's04', 's05'),
color = c('darkred', 'darkblue', 'darkgreen', 'darkorange', 'darkmagenta'),
names = c('Jarrett\nJack', 'Tim\nHardaway', 'Courtney\nLee', 'Kristaps\nPorzingis', 'Enes\nKanter'))
nba.edges <- data.frame(from = c('s01', 's01', 's01', 's01',
's02', 's02', 's02', 's02',
's03', 's03', 's03', 's03',
's04', 's04', 's04', 's04',
's05', 's05', 's05', 's05'),
to = c('s02', 's03', 's04', 's05',
's01', 's03', 's04', 's05',
's01', 's02', 's04', 's05',
's01', 's02', 's03', 's05',
's01', 's02', 's03', 's04'),
width = sample(1:12, 20, replace = TRUE))
nba.net <- graph_from_data_frame(d = nba.edges, vertices = nba.nodes, directed = T)
# ignore the layout = l, i have this commented out, was just testing it
# l <- layout_in_circle(nba.net)
plot(nba.net, # layout = l,
vertex.size = 20,
edge.curved = 0.3,
vertex.label = V(nba.net)$names,
vertex.label.dist = 4,
vertex.label.font = 2)
如您所见,情节不错,但我对 edge.curved 参数的工作方式非常不满意。而不是在我共享的链接中绘制类似于图中的平滑弯曲边缘线,边缘是这些弯曲线......我设置的参数 edge.curved 越大,线条越弯曲......不是我希望的曲线。
如您所知,我分享的链接中的图表中的边缘似乎是完美的曲线(完美的意思是它们具有圆的曲率)。有什么办法可以使用 igraph 做到这一点?对此的任何帮助表示赞赏,谢谢!
【问题讨论】: