m0_64677750 2023-01-09 18:02 采纳率: 50%
浏览 13
已结题

怎么让我画的无向图显示在canvas画布上


def main3():
          canvas = tkinter.Canvas(window2, width=50, height=50)
          canvas.grid(row=8,column=10)

# 创建一个无向图
          G = nx.Graph()
          G.add_edge('A', 'B', weight=1)
          G.add_edge('A', 'D', weight=7)
          G.add_edge('B', 'E', weight=4)
          G.add_edge('D', 'E', weight=3)
          G.add_edge('F', 'G', weight=4)
          G.add_edge('F', 'E', weight=5)
          G.add_edge('G', 'K', weight=9)

# 绘制图像
          source=nameEntry3.get()
          target=nameEntry4.get()
 
          minWPath_v1_v5 = nx.dijkstra_path(G, source, target)  # 顶点 0 到 顶点 3 的最短加权路径
                
# 两个指定顶点之间的最短加权路径的长度
          
          pos = nx.spring_layout(G)  # 使用 FR 算法排列节点
          nx.draw(G, pos, with_labels=True, alpha=0.5,on=canvas)
          labels = nx.get_edge_attributes(G, 'weight')
          nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)
          edgeList = []
          for i in range(len(minWPath_v1_v5)-1):
                  edgeList.append((minWPath_v1_v5[i], minWPath_v1_v5[i+1]))
                  nx.draw_networkx_edges(G, pos, edgelist=edgeList, edge_color='m', width=4,on=canvas)

            
          
      

怎么让我画的无向图显示在canvas画布上

  • 写回答

2条回答 默认 最新

  • m0_54204465 2023-01-09 18:36
    关注

    你可以将画布作为绘图函数的第一个参数,如:

    nx.draw(G, pos, with_labels=True, alpha=0.5, canvas=canvas)
    
    

    或者,可以使用 FigureCanvasTkAgg 将画布绑定到 tkinter 窗口中,例如:

    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
    
    fig = plt.figure(figsize=(5, 5))
    canvas = FigureCanvasTkAgg(fig, master=window2)
    canvas.get_tk_widget().grid(row=8, column=10)
    nx.draw(G, pos, with_labels=True, alpha=0.5, fig=fig)
    
    

    在这种情况下,应该使用 fig 而不是 canvas 作为绘图函数的第一个参数。

    请注意,如果使用 FigureCanvasTkAgg,则需要导入 matplotlib.pyplot 模块,并使用 plt.figure 创建一个新图表。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月9日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵