【问题标题】:How to fill matplotlib polygon regardless of point order?无论点顺序如何,如何填充 matplotlib 多边形?
【发布时间】:2022-01-27 05:59:14
【问题描述】:

我正在尝试将下面显示的区域全部设为绿色。

到目前为止,我使用这个: 但并不是整个四边形都是彩色的。

x,y = [3.3333333333333335, 5.0, -0.0, -0.0], [3.333333333333333, 0.0, 5.0, 0.0]
my_plot.fill(x, y, "g")   

在这个特定示例中,可以修复 x 和 y 的旋转。但在其他时候就不行了。

有没有办法填充给定点之间区域之间的所有内容,而不管点的任何顺序?

解决方案:

from scipy.spatial import ConvexHull
points = np.array(Utils2D.get_valid_intersections(lin_prog.constraints))
hull = ConvexHull(points)
my_plot.fill(points[hull.vertices, 0], points[hull.vertices, 1])

【问题讨论】:

  • 您可以计算点的凸包,然后填充该多边形。
  • 我该怎么做@JohanC?我的点已经是凸包了,不是吗?我的意思是我的形状是凸的。
  • 您可以并且应该发布您的解决方案作为答案和accept this answer

标签: python matplotlib polygon


【解决方案1】:

如果您确定所有原始点都已经位于凸包上,您可以通过它们的坐标相对于它们的中心的角度对它们进行排序:

import matplotlib.pyplot as plt
import numpy as np

x, y = np.array([3.3333333333333335, 5.0, -0.0, -0.0]), np.array([3.333333333333333, 0.0, 5.0, 0.0])
order = np.argsort(np.arctan2(y - y.mean(), x - x.mean()))
plt.fill(x[order], y[order], "g", alpha=0.5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    相关资源
    最近更新 更多