为什么PolyCollection总是关闭?

时间:2014-04-30 04:01:40

标签: python matplotlib

大家好。 我试图通过matplotlib.collections.polycollection绘制多边形。但是,即使我设置了closed = Fasle,多边形也总是关闭的。我怎么能不关闭我的多边形?示例代码如下。

import matplotlib
from matplotlib.collections import PolyCollection
import matplotlib.pyplot as plt
import numpy as np


if __name__ == '__main__':
    xy = np.random.rand(12).reshape(2,3,2)


    p=PolyCollection(xy,closed=False)
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    ax1.add_collection(p)

1 个答案:

答案 0 :(得分:2)

当close = False时,它实际上没有关闭多边形。但是,当您“填充”多边形时,它会自动填充到将要关闭的边界。

考虑以下修订代码

import matplotlib
from matplotlib.collections import PolyCollection
import matplotlib.pyplot as plt
import numpy as np


if __name__ == '__main__':
    xy = np.random.rand(8).reshape(1,4,2)


    p=PolyCollection(xy,closed=False, edgecolors = 'red', facecolors = 'white')
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    ax1.add_collection(p)

通过将edgecolor设置为明显的红色和facecolor = white,您可以清楚地看到关闭时= False多边形未关闭。在这种情况下,闭合意味着在第一个和最后一个坐标之间绘制最终边缘。但是,如果facecolor类似于蓝色,它当然必须“关闭”多边形以填充空间,否则就没有约束面部开始和结束的地方。