要绘制有向加权图,可以使用Python中的networkx库。下面是使用networkx库绘制有向加权图的代码:

import networkx as nx
import matplotlib.pyplot as plt

# 创建有向加权图
G = nx.DiGraph()

# 添加节点
G.add_nodes_from(range(8))

# 添加边和权重
edges = [(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7),
         (1, 0), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7),
         (2, 0), (2, 1), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7),
         (3, 0), (3, 1), (3, 2), (3, 4), (3, 5), (3, 6), (3, 7),
         (4, 0), (4, 1), (4, 2), (4, 3), (4, 5), (4, 6), (4, 7),
         (5, 0), (5, 1), (5, 2), (5, 3), (5, 4), (5, 6), (5, 7),
         (6, 0), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 7),
         (7, 0), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 6)]

weights = [300, 360, 210, 530, 475, 500, 690,
           300, 380, 270, 230, 285, 200, 390,
           360, 380, 510, 230, 665, 490, 680,
           210, 270, 510, 470, 265, 450, 640,
           530, 230, 230, 470, 515, 260, 450,
           475, 285, 665, 265, 515, 460, 650,
           500, 200, 490, 450, 260, 460, 190,
           690, 390, 680, 640, 450, 650, 190]

G.add_weighted_edges_from(zip(edges, weights))

# 绘制图形
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True, node_size=1000, node_color='lightblue', font_size=10, font_weight='bold')

# 添加边的权重
labels = nx.get_edge_attributes(G, 'weight')
nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)

plt.show()

解释:

  1. 首先导入networkx库和matplotlib.pyplot库。
  2. 创建一个有向加权图G。
  3. 使用add_nodes_from()方法添加节点,这里有8个节点。
  4. 使用add_weighted_edges_from()方法添加边和权重,使用zip()函数将边和权重进行打包。
  5. 使用spring_layout()方法确定节点的位置。
  6. 使用draw()方法绘制图形,设置参数with_labels=True表示显示节点的标签,设置node_size表示节点的大小,设置node_color表示节点的颜色,设置font_size和font_weight表示节点标签的字体大小和字体粗细。
  7. 使用get_edge_attributes()方法获取边的权重,使用draw_networkx_edge_labels()方法添加边的权重。
  8. 使用plt.show()显示图形。

运行以上代码,将会绘制出一个有向加权图,其中每个节点表示一个景点,边表示景点之间的距离,边的标签表示距离的权重。

0 300 360 210 530 475 500 690 300 0 380 270 230 285 200 390 360 380 0 510 230 665 490 680 210 270 510 0 470 265 450 640 530 230 230 470 0 515 260 450 475 285

原文地址: https://www.cveoy.top/t/topic/iPF4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录