You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

igraph绘图:自定义顶点大小范围及特定值黑色图例制作

igraph 顶点缩放与自定义图例解决方案

Q1:按指定范围线性缩放顶点大小

要把val的取值范围(1-10)映射到顶点大小的2-15区间,用线性缩放公式即可实现,保证最小顶点对应2,最大对应15,其余按比例分配:

# 计算缩放后的顶点大小
scaled_val <- 2 + (val - min(val)) * (15 - 2)/(max(val) - min(val))

把原plot()里的vertex.size = val替换成vertex.size = scaled_val即可,无需保留cex=0.5(scaled_val已经是最终目标大小)。

Q2:生成指定val值的黑色大小图例

只需在legend()中指定目标val值、对应缩放后的大小,同时把点的填充色和边框色都设为黑色:

# 指定要展示的val值
legend_vals <- c(1,4,8,10)
# 提取对应缩放后的大小
legend_sizes <- scaled_val[val %in% legend_vals]

# 绘制图例
legend(-1.3, -0.9, 
       legend = legend_vals, 
       pch = 21, 
       pt.bg = "black",  # 填充黑色
       col = "black",    # 边框黑色
       pt.cex = legend_sizes/10,  # 匹配图中顶点大小的比例调整
       bty="n", 
       ncol = 2  # 调整列数让图例更紧凑
       )

注:pt.cex是相对于R默认点大小的比例,用legend_sizes/10是因为igraph默认顶点大小基准值约为10,能保证图例点与图中顶点大小完全匹配。


完整可运行代码

library(igraph)

g <- make_ring(10)
val = 1:10
pal <- c("pink", "steelblue")
V(g)$color <- c(rep("pink", 5), rep("steelblue", 5))

# Q1:计算缩放后的顶点大小
scaled_val <- 2 + (val - min(val)) * (15 - 2)/(max(val) - min(val))

pdf("aa.pdf", width = 7, height = 7)
plot(g, layout = layout_with_fr, 
     vertex.size = scaled_val,
     vertex.frame.color = NA, 
     edge.color = adjustcolor("#c7c7c7", alpha.f = 0.9))

# Q2:绘制自定义黑色图例
legend_vals <- c(1,4,8,10)
legend_sizes <- scaled_val[val %in% legend_vals]
legend(-1.3, -0.9, 
       legend = legend_vals, 
       pch = 21, 
       pt.bg = "black",
       col = "black",
       pt.cex = legend_sizes/10,
       bty="n", 
       ncol = 2)
dev.off()

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:17:13