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

如何使用Python列表批量绘制正方形?

批量绘制正方形的循环修正方案

你的代码存在几个关键问题导致无法批量绘制:

  1. 第一个循环中添加了break,仅生成了单个正方形的数据,且未将所有正方形信息存入列表;
  2. 边长side仅计算了一次,没有对应每个正方形单独的边长;
  3. 错误地将square同时赋值给x和y,混淆了坐标逻辑;
  4. 颜色列表长度小于正方形数量时,未处理循环复用颜色的问题。

以下是修正后的完整代码:

import matplotlib.pyplot as plt
from itertools import cycle

Left = [264, 268, 268, 268, 272, 272, 272, 276, 276, 304, 308, 308, 308, 392, 444, 468, 472, 472, 476, 476, 984, 988, 996, 1000, 1008, 1012, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1024, 1028, 1032, 1040, 1056, 1100, 1132, 1184, 1184, 1228, 1228, 1232, 1232, 1276, 1332]
Right = [284, 292, 296, 304, 308, 312, 316, 316, 316, 316, 316, 320, 320, 408, 468, 480, 484, 488, 488, 492, 992, 996, 1012, 1012, 1024, 1024, 1024, 1024, 1024, 1028, 1028, 1028, 1036, 1040, 1040, 1044, 1044, 1044, 1044, 1056, 1084, 1160, 1196, 1200, 1236, 1236, 1236, 1236, 1268, 1292, 1340]
colors = ['crimson', 'dodgerblue', 'limegreen', 'black']
color_cycle = cycle(colors)  # 循环复用颜色列表

# 直接遍历Left、Right和循环的颜色,逐个绘制正方形
for left, right, col in zip(Left, Right, color_cycle):
    side = right - left  # 计算当前正方形的边长
    x = left
    y = 1  # 固定y坐标,可根据需求调整
    # 绘制闭合的正方形
    plt.plot([x, x + side, x + side, x, x],
             [y, y, y + side, y + side, y],
             color=col, linestyle='solid')

plt.title('正方形图案')
plt.gca().set_aspect('equal')  # 保证正方形显示为正
plt.show()

关键修正说明:

  • 去掉了多余的squares列表构建步骤,直接通过zip(Left, Right)遍历所有需要绘制的正方形数据;
  • 每个正方形的边长在循环内单独计算,确保对应正确的左右边界差;
  • 使用itertools.cycle处理颜色复用,避免因正方形数量多于颜色数量导致的报错;
  • 明确x和y的赋值逻辑,x取当前的Left值,y设为固定值1(可根据需求修改为其他固定值或动态值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:05:03