这可能听起来像一个问题的非常细微的细节,但是我试图让这个图表看起来尽可能干净,任何反馈都值得赞赏。我正致力于在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做到这一点吗?感谢任何帮助,谢谢!
答案 0 :(得分:0)
如果你想在屏幕上看到更好的照片,我没有任何帮助。但是,如果您要保存图片(比如包含在纸张或PowerPoint中),您可以使用不同的图形设备获得没有锯齿的图片。尝试:
png('Graph.png', 500, 500, type='cairo')
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)
dev.off()
查找当前目录中的输出(使用getwd()
)