数据准备(数据为矩阵的表格):
windowsFonts(SH = windowsFont("Times New Roman"))#设置字体
library(openxlsx)
df=read.xlsx("data.xlsx",rowNames = T)
head(df)
美国 中国 英国 伊朗 沙特阿拉伯 澳大利亚 丹麦 越南 韩国 芬兰 希腊
美国 21 14 1 3 3 1 1 0 0 0 0
中国 14 19 1 1 2 0 2 0 0 0 0
英国 1 1 14 7 3 4 3 3 0 2 2
伊朗 3 1 7 13 4 0 3 4 0 2 0
沙特阿拉伯 3 2 3 4 7 0 1 3 0 1 0
澳大利亚 1 0 4 0 0 5 0 0 0 0 2
构建点边文件:
edges=reshape2::melt(as.matrix(df))
colnames(edges)=c("from","to","r")
edges=subset(edges,!edges$r=="0") #去掉连接为0的边
nodes=data.frame(name=unique(c(edges$from,edges$to)))
nodes$degree=degree(g)
g <- tbl_graph(nodes = nodes, edges = edges)
# 自定义颜色映射
mycol=c("#5599FF","#00AA00","#FF8888",
"#FFDD55","#DC143C","#FF8C00",
"#9ACD32", "#7700FF","#00AA88",
"#CCCCFF","#77DDFF","#FFDD65",
"#AAFFEE","steelblue","#800000")
绘制图形
p=ggraph(g,layout='linear',circular = TRUE) +
# geom_edge_link(aes(colour = class,width=abs(r)),alpha = 0.5) +直线
# geom_edge_arc(alpha = 0.5) + #设置链接线为曲线,
geom_edge_arc(mapping = aes(edge_width = log10(r+1)
),edge_color = "green4",
# arrow = arrow(length = unit(4, "mm")),
start_cap = circle(3, "mm"),
end_cap = circle(3, "mm"),
alpha = 0.5) +
geom_node_point(aes(size=degree,colour = name),
alpha = 1) +
geom_node_text(aes(x = x, y=y, label=name),
angle=1,hjust=0.5, fontface="bold",size=3,family="SH") + # 设置点的注释
scale_size_continuous(range = c(1,15)) + #设置点大小范围
scale_color_manual(values =mycol) +
scale_edge_width_continuous(range = c(0.5,1.5)) +
theme_graph()+theme(legend.position="none")
# guides(color=F,edge_width=guide_legend(title=NULL),size=guide_legend(title=NULL))
# theme(legend.position="bottom") 图例设置
p
![](https://img.haomeiwen.com/i10251230/8ac7b6adbba90ffe.png)
@西北工作室(TB)
网友评论