使用ggraph绘制二部网络时如何自定义节点样式与轴标签
解决方案
首先确保你已加载所需依赖包:
library(ggraph) library(tidygraph)
你可以直接使用下方调整后的代码实现需求:
# 先将邻接矩阵转为tidygraph对象方便处理节点属性 graph <- as_tbl_graph(check, directed = FALSE) %>% mutate(type = ifelse(name %in% colnames(check), TRUE, FALSE)) # 标记上下部分节点 ggraph(graph, layout = "bipartite") + geom_edge_link0(aes(edge_width = weight), edge_colour = "grey66") + # 自定义节点样式:按type映射颜色和形状 geom_node_point(aes(shape = type, color = type), size = 5) + scale_shape_manual(values = c("FALSE" = 16, "TRUE" = 15)) + # 16是圆形,15是正方形 scale_color_manual(values = c("FALSE" = "#238b45", "TRUE" = "#2382b2")) + # 下绿上蓝 # 上下双x轴分别对应两组标签 scale_x_continuous( breaks = 1:nrow(check), labels = rownames(check), sec.axis = sec_axis( trans = ~., breaks = 1:ncol(check), labels = colnames(check) ) ) + # 可选调整:隐藏不必要的图例、美化主题 theme_minimal() + theme( legend.position = "none", axis.text.y = element_blank(), axis.title = element_blank(), panel.grid = element_blank() )
代码说明
- 节点样式自定义:通过
type字段区分上下两组节点,分别映射形状和颜色参数,手动指定对应值即可实现上蓝正方形、下绿圆形的效果。 - 双x轴标签设置:用
scale_x_continuous的主x轴设置下方行标签,次x轴(sec_axis)设置上方列标签,直接对应两组节点的x坐标位置。
内容的提问来源于stack exchange,提问作者LDT
相关产品推荐
相关产品推荐

