2014-04-30 71 views
0

为什么PolyCollection总是关闭?

大家好。 我试图通过matplotlib.collections.polycollection绘制多边形。然而,即使当我设置关闭= 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) 

回答

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 =白,你可以清楚地看到,闭合=当假多边形未关闭。在这种情况下,闭合意味着绘制第一个和最后一个坐标之间的最终边缘。但是,如果facecolor是蓝色的,它当然必须“关闭”多边形以填充空间,否则不会有任何约束脸部开始和结束的地方。

+0

你说得对,我现在可以拥有一个非封闭的,视觉上没有填充的聚集。但是我甚至可以抑制polycollection的填充过程吗?我想填充过程会增加绘图过程的头部,当我绘制数千行时,这会使我的程序变慢。 –