如何排列矩形?

How to line up rectangles?

我在打印排列的矩形时遇到问题。任务是实现生成无限序列的函数(但是教授说它不一定,可以是,例如,10个矩形)不与具有不同坐标的相等矩形相交。 它应该看起来像图片上的六边形(但我需要矩形)的下直线(等间距)。

现在我有这个代码:

import matplotlib.pyplot as plt


class Figure:
    def __init__(self):
        self.x = []
        self.y = []

    def show(self):
        plt.plot(self.x, self.y)
        plt.axis([-0.2, 10, -0.2, 5])
        plt.show()


class Rectangle(Figure):
    def __init__(self):
        self.x = [0, 0, 2, 2, 0]
        self.y = [0, 1, 1, 0, 0]


def show():
    plot = Rectangle()
    plot.show()

show()

不允许我使用 matplotlib 创建图形,应该使用我自己的 类 和函数来完成。第一个矩形的坐标已经在代码中。第二个的坐标应该是:

x = [3, 3, 5, 5, 3]
y = [0, 1, 1, 0, 0]

第三个:

x = [6, 6, 8, 8, 6]
y = [0, 1, 1, 0, 0]

等等。我看到 x 3 中的每个项目都被添加了。但我不明白如何制作一个函数(或使用什么库)来执行它并在一个图中显示所有矩形。预先感谢您的所有帮助!

您可以使用 for-loop 多次重复相同的代码但具有不同的值 - plot.x = ... - 您可以使用 for 中的值添加 3 - 3*i

并且您应该从 class 中删除 plt.show() 并仅使用一次 - 在绘制所有矩形之后 - 这将在一个图上显示所有矩形。

import matplotlib.pyplot as plt


class Figure:
    def __init__(self):
        self.x = []
        self.y = []

    def show(self):
        plt.plot(self.x, self.y)
        plt.axis([-0.2, 10, -0.2, 5])
        #plt.show()


class Rectangle(Figure):
    def __init__(self):
        self.x = [0, 0, 2, 2, 0]
        self.y = [0, 1, 1, 0, 0]


def show():
    for i in range(10):
        plot = Rectangle()
        plot.x = [x+3*i for x in plot.x]
        plot.show()
    plt.show()

show()