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

使用Matplotlib绘制完全图(正方形、蛛网图)时结果不符合预期的问题

解决Matplotlib绘制完全图的异常问题

嘿,我一眼就看出你代码里的问题啦!你离正确结果只差一步——plt.plot()的参数传递方式错了,咱们来一步步修正:

问题根源

你当前的代码里,x = points[i]和y = points[j]拿到的是单个点的(x,y)元组,而plt.plot()需要的是两个点的x坐标组成的列表和两个点的y坐标组成的列表。举个例子,当你想画点(0,0)和(1,0)之间的连线时,应该传给plt.plot()的是[0,1](x坐标)和[0,0](y坐标),而不是(0,0)和(1,0)。

修正后的完整代码

import numpy as np
import matplotlib.pyplot as plt

alpha = (np.sqrt(2)/2)
square_points = ((0, 0),(1, 0),(0, 1),(1, 1))
shape_points = ((1, 0),(alpha, alpha),(0, 1),(-alpha, alpha),(-1, 0),(-alpha, -alpha),(0, -1),(alpha, -alpha))

def complete_graph(points):
    # 遍历所有点对(i,j),i>j避免重复画同一条线
    for i in range(len(points)):
        for j in range(i):
            # 提取两个点的x坐标和y坐标
            x_coords = [points[i][0], points[j][0]]
            y_coords = [points[i][1], points[j][1]]
            # 绘制两点之间的连线,可选添加样式让图更清晰
            plt.plot(x_coords, y_coords, color='gray', linewidth=1)
    # 设置坐标轴比例一致,避免图形变形
    plt.axis('equal')
    plt.show()

complete_graph(square_points)  # 正方形完全图(含对角线)
complete_graph(shape_points)   # 蛛网形状的完全图

额外优化说明

  • 加上plt.axis('equal')可以让x轴和y轴的比例一致,保证正方形不会被拉伸成长方形,蛛网形状也不会变形。
  • 给plt.plot()加上color和linewidth参数,能让连线看起来更整洁,避免线条重叠后太杂乱。

现在运行代码,你就能得到预期的完全图啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 15:18:14