在绘图中放置矩形[重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

对于这个问题,我指的是这个例子:https://matplotlib.org/examples/user_interfaces/embedding_in_qt5.html

我想用没有显示坐标系的简单矩形图替换正弦图。

确切地说,我想改变原始代码的这一部分:

class MyStaticMplCanvas(MyMplCanvas):
    """Simple canvas with a sine plot."""

    def compute_initial_figure(self):
        t = arange(0.0, 3.0, 0.01)
        s = sin(2*pi*t)
        self.axes.plot(t, s)

我在Matplotlib中找到了矩形类:https://matplotlib.org/devdocs/api/_as_gen/matplotlib.patches.Rectangle.html#examples-using-matplotlib-patches-rectangle

这应该是一项简单的任务。但是我在没有成功的情况下自己尝试了很多。我的许多尝试之一看起来像:(但它不起作用)

class MyStaticMplCanvas(MyMplCanvas):
    """Simple canvas with a rectangle plot."""
    def compute_initial_figure(self):
        x = 10
        y = 20
        width = 10
        height = 20

        fig,ax = plt.subplots(1)
        rect = mpatches.Rectangle((x, y), width, height)

        ax.add_patch(rect)
        self.axes.plot(rect)

有人可以帮帮我吗?任何帮助将非常感谢!

python matplotlib pyqt
1个回答
2
投票

你可以用Rectangleself.axes添加到add_patch。此方法不会自动更改轴的限制。考虑一下你试图放置Rectangle补丁的位置。

class MyStaticMplCanvas(MyMplCanvas):

    """Simple canvas with a rectangle plot."""
    def compute_initial_figure(self):
        x = 10
        y = 20
        width = 10
        height = 20

        rect = mpatches.Rectangle((x, y), width, height)
        self.axes.add_patch(rect)
        # Change limits so we can see rect
        self.axes.set_xlim((0, 50))
        self.axes.set_ylim((0, 50))
© www.soinside.com 2019 - 2024. All rights reserved.