【问题标题】:Can we draw rectangle using matplotlib.Patches by just specifying its corner?我们可以通过指定角点来使用 matplotlib.Patches 绘制矩形吗?
【发布时间】:2019-11-29 13:07:07
【问题描述】:

我想在绘图上隐藏几个点,我正在使用补丁来绘制一个矩形,那么有没有什么方法可以通过指定角来绘制一个矩形? 我只知道如何通过高度和宽度参数进行绘制。

patch= ax1.add_patch(patches.Rectangle((x, y), 0.3, 0.5) 

我如何修改代码以仅使用这些坐标 (x1,y1),(x2,y2)(x3,y3)(x4,y4) 来绘制矩形。

【问题讨论】:

  • 如果你有坐标,那么计算宽度和高度应该是微不足道的?

标签: python matplotlib


【解决方案1】:

我假设坐标按以下方式排序:

top_left = [2,2]
bottom_left = [2, 1]
top_right = [4,2]
bottm_right = [4, 1]

这样你就可以轻松计算出宽高并输入到patches

w = top_left[0]-top_right[0]
h = top_left[1]-bottom_left[1]

注意

如果它们没有被排序,逻辑很简单,你找到x位置相同的点并以绝对值计算差值并获得宽度(和对称的高度)

【讨论】:

    【解决方案2】:

    所选答案仍然只计算长度和宽度(如果需要,则忽略任何角度)。它可以通过计算角度并添加它来工作,但如果你已经计算了所有顶点,它仍然会绕过你的意图。

    您的另一个选择是只使用patches.Polygon 类。

    points = [(x1,y1),(x2,y2)(x3,y3)(x4,y4)]
    rect = patches.Polygon(points, linewidth=1, edgecolor='r', facecolor='none')
    ax.add_patch(rect)
    

    如果那是那些点所指定的,最终只会绘制一个矩形。 注意,点的顺序很重要,但这没什么大不了的。这是我刚刚执行此操作的位置的图像。绿色框 + 是我的计算点,红色矩形是我的多边形

    sample of where I did this

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 2011-05-02
      • 1970-01-01
      • 2018-12-06
      • 2021-10-06
      • 2016-05-05
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多