python - 如何有效地绘制一个图,其中每个节点代表欧几里得空间中的一个点?
问题描述
我在 python 中有一个几乎完全连接的图,大约有 3k 个节点和 9M 个边。该图中的每个节点都由 R^3 中的一个点表示,每条边表示它们之间的距离。我尝试遍历所有边缘,并使用 3d 投影使用 matplotlib 绘制它们。像这样的东西:
fig, ax = plt.subplots(ncols = len(network.positions) - 1, subplot_kw={'projection': '3d'})
for idx in range(len(network.positions) - 1):
x = network.positions[idx][0, :].numpy()
y = network.positions[idx][1, :].numpy()
z = network.positions[idx][2, :].numpy()
ax[idx].scatter(x,y,z, alpha = .5, s=.01, label = "layer " + str(idx + 1), c='r')
x = network.positions[idx + 1][0, :].numpy()
y = network.positions[idx + 1][1, :].numpy()
z = network.positions[idx + 1][2, :].numpy()
ax[idx].scatter(x,y,z, alpha = .5, s=.01, label = "layer " + str(idx + 2), c = 'b')
for idx_1 in tqdm(range(int(network.positions[idx].shape[1]))):
for idx_2 in range(int(network.positions[idx + 1].shape[1])):
x_1, y_1, z_1 = network.positions[idx][:, idx_1]
x_2, y_2, z_2 = network.positions[idx][:, idx_2]
ax[idx].plot([x_1, x_2], [y_1, y_2], [z_1, z_2])
然而,这是非常低效的——因为对 plt.plot 的调用很多。我需要一种方法,我可以做类似的事情,但通过相应的权重对每条线的颜色或透明度进行加权。
谢谢,阿米特
解决方案
推荐阅读
- php - 我可以在没有循环的情况下获取关系数据(Laravel)
- django - django 模型创建连接到 mssql
- jasper-reports - 如何将子数据集中的变量添加到报告中?[碧玉]
- three.js - 任何获取边界框面的方法
- javascript - 在反应日期上使用 moment.locale('de') 来显示德语翻译,但收到低于意外的输出
- autodesk-forge - 如何将模型从伪造场景导入地图(Google、arcGis 等)?
- python-3.x - 无法使用 os.system 执行查找
- reactjs - 使 React 组件在商店中更改状态时重新渲染
- json - 根据另一个键特定值获取特定键的所有值
- expo - 世博会:背景和封闭应用