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

使用Cytoscape圆形布局时如何获取各节点相对于圆周中心的夹角

Cytoscape圆形布局节点相对圆心夹角获取方法

首先确认你已对目标网络应用Circle Layout,此时节点坐标已按圆形规则排布,可通过以下两种方式获取夹角:

方法1:界面导出数据手动计算

  • 导出节点坐标表:点击顶部菜单栏 文件(File)→ 导出(Export)→ 表格至文件(Table to File),选择导出节点表(Node Table),导出时勾选X Layout Position、Y Layout Position两个属性,保存为CSV格式文件。
  • 计算圆心坐标:导出的CSV中,所有节点X坐标的平均值为圆心横坐标cx,所有节点Y坐标的平均值为圆心纵坐标cy。
  • 计算单个节点夹角:对每个节点的坐标(x,y),使用反正切函数计算夹角:

    弧度值公式:angle_rad = atan2(y - cy, x - cx)
    转角度值公式:angle_deg = angle_rad * 180 / π
    计算得到的角度默认范围为-180°180°,如果需要统一为0°360°的范围,给负的计算结果加360即可。

方法2:通过CyREST接口自动化计算(适合批量处理场景)

确保Cytoscape已启动并开启CyREST功能(默认端口1234),可直接通过接口拉取节点坐标自动计算,Python示例代码如下:

import requests
import math

CYREST_BASE = "http://localhost:1234/v1"
# 获取当前激活网络的ID
current_network = requests.get(f"{CYREST_BASE}/networks/currentNetwork").json()
network_suid = current_network["data"]["networkSUID"]
# 拉取所有节点的坐标信息
node_list = requests.get(f"{CYREST_BASE}/networks/{network_suid}/nodes?column=position").json()

# 计算圆心坐标
x_list = [node["position"]["x"] for node in node_list]
y_list = [node["position"]["y"] for node in node_list]
cx, cy = sum(x_list)/len(x_list), sum(y_list)/len(y_list)

# 遍历计算每个节点的夹角
node_angle_map = {}
for node in node_list:
    x, y = node["position"]["x"], node["position"]["y"]
    rad = math.atan2(y - cy, x - cx)
    deg = math.degrees(rad)
    # 转换为0-360度范围
    if deg < 0:
        deg += 360
    node_angle_map[node["data"]["name"]] = deg

注意:如果你手动拖动过圆形布局中的节点,最终计算得到的是节点当前实际位置对应的夹角,而非初始圆形布局的理论夹角,如需原始布局夹角请先重新应用一次Circle Layout再计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:54:03