On Tue, Oct 16, 2012 at 2:34 AM, Damon McDougall
<damon.mcdoug...@gmail.com> wrote:
> On Tue, Oct 16, 2012 at 8:04 AM, T J <tjhn...@gmail.com> wrote:
>> I'm interested in clipping the result of plt.contour (and
>> plt.contourf) to a patch.  However, QuadContourSet does not have a
>> set_clip_path() method.  Is there a way to do this?
>>
>> Here is an example plot that I have generated.
>>
>>    http://imgur.com/pybIf
>>
>> For the curious, it plots contours of a function on the 2-simplex.
>> The way I've gone about computing this is, unfortunately, convoluted.
>> I generate a regular grid in 2D and treat each point as a projection
>> of a 3D probability vector into 2D.  Then, I invert the projection so
>> that I have "distributions" and then compute the Z value for each
>> point.  The contours are then calculated, but now, I need to clip
>> everything outside the triangle, as only points within the triangle
>> correspond to actual distributions.
>>
>> Is there a more direct way to calculate contours on a restricted set?
>>
>> Thanks.
>
> The contour functions support masked regions. I think that might be
> what you're looking for. Since the region you want to mask is a
> triangle, maybe even use a masked triangulated contour plot? Here's
> the call signature:
> http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.tricontour
>
> Does that help?
>

Yes, that looks to be exactly what I am looking for.  Note, the mask
kwarg is barely mentioned in that docstring, but I think I get it.
However, I am having some trouble.  tricontour seems to fail when
computing the Triangulation() object.  Here is my code:

http://codepad.org/cVB7YP9r

This is a set of 152 points on a triangle.  delaunay is mentioned to
have problems for some pathological cases.  Is a complete triangular
grid considered as such a case?

Code is shown below as well.

------------

import numpy as np
import matplotlib.pyplot as plt

points = np.array([
 [0.8660254037844384, -0.5000000000000004],
 [0.7577722283113836, -0.5000000000000004],
 [0.6495190528383288, -0.5000000000000003],
 [0.5412658773652739, -0.5000000000000003],
 [0.4330127018922191, -0.5000000000000002],
 [0.3247595264191642, -0.5000000000000002],
 [0.21650635094610943, -0.5000000000000002],
 [0.10825317547305463, -0.5000000000000001],
 [-2.220446049250313e-16, -0.5000000000000001],
 [-0.10825317547305507, -0.5],
 [-0.21650635094610993, -0.5],
 [-0.32475952641916467, -0.5],
 [-0.4330127018922195, -0.4999999999999999],
 [-0.5412658773652743, -0.4999999999999999],
 [-0.6495190528383291, -0.49999999999999983],
 [-0.7577722283113839, -0.4999999999999998],
 [-0.8660254037844388, -0.4999999999999997],
 [0.811898816047911, -0.40625000000000044],
 [0.7036456405748561, -0.4062500000000004],
 [0.5953924651018013, -0.40625000000000033],
 [0.48713928962874653, -0.4062500000000003],
 [0.3788861141556917, -0.4062500000000002],
 [0.2706329386826369, -0.4062500000000002],
 [0.16237976320958203, -0.4062500000000001],
 [0.05412658773652723, -0.4062500000000001],
 [-0.05412658773652762, -0.40625000000000006],
 [-0.16237976320958242, -0.40625],
 [-0.2706329386826372, -0.40625],
 [-0.37888611415569207, -0.40624999999999994],
 [-0.4871392896287469, -0.4062499999999999],
 [-0.5953924651018018, -0.40624999999999983],
 [-0.7036456405748566, -0.4062499999999998],
 [-0.8118988160479114, -0.4062499999999997],
 [0.7577722283113836, -0.3125000000000004],
 [0.6495190528383288, -0.31250000000000033],
 [0.541265877365274, -0.31250000000000033],
 [0.4330127018922191, -0.3125000000000002],
 [0.3247595264191643, -0.3125000000000002],
 [0.21650635094610948, -0.31250000000000017],
 [0.10825317547305463, -0.3125000000000001],
 [-1.6653345369377348e-16, -0.31250000000000006],
 [-0.10825317547305502, -0.3125],
 [-0.21650635094610982, -0.3125],
 [-0.3247595264191646, -0.31249999999999994],
 [-0.43301270189221946, -0.3124999999999999],
 [-0.5412658773652743, -0.31249999999999983],
 [-0.6495190528383292, -0.3124999999999998],
 [-0.7577722283113839, -0.3124999999999998],
 [0.7036456405748562, -0.21875000000000036],
 [0.5953924651018013, -0.2187500000000003],
 [0.48713928962874653, -0.21875000000000028],
 [0.37888611415569173, -0.21875000000000022],
 [0.2706329386826369, -0.21875000000000017],
 [0.16237976320958208, -0.21875000000000014],
 [0.05412658773652723, -0.21875000000000008],
 [-0.054126587736527565, -0.21875000000000006],
 [-0.16237976320958242, -0.21875],
 [-0.2706329386826372, -0.21874999999999994],
 [-0.378886114155692, -0.21874999999999992],
 [-0.48713928962874686, -0.21874999999999986],
 [-0.5953924651018017, -0.2187499999999998],
 [-0.7036456405748566, -0.21874999999999978],
 [0.6495190528383288, -0.12500000000000033],
 [0.541265877365274, -0.12500000000000028],
 [0.43301270189221913, -0.12500000000000025],
 [0.32475952641916433, -0.1250000000000002],
 [0.2165063509461095, -0.12500000000000017],
 [0.10825317547305469, -0.1250000000000001],
 [-1.6653345369377348e-16, -0.12500000000000006],
 [-0.10825317547305496, -0.125],
 [-0.21650635094610982, -0.12499999999999997],
 [-0.3247595264191646, -0.12499999999999993],
 [-0.4330127018922194, -0.12499999999999989],
 [-0.5412658773652743, -0.12499999999999983],
 [-0.6495190528383291, -0.12499999999999979],
 [0.5953924651018014, -0.031250000000000305],
 [0.4871392896287466, -0.03125000000000028],
 [0.37888611415569173, -0.031250000000000194],
 [0.27063293868263694, -0.03125000000000017],
 [0.1623797632095821, -0.03125000000000014],
 [0.05412658773652729, -0.03125000000000008],
 [-0.054126587736527565, -0.03125000000000003],
 [-0.16237976320958236, -0.031249999999999986],
 [-0.2706329386826372, -0.031249999999999944],
 [-0.378886114155692, -0.031249999999999903],
 [-0.4871392896287468, -0.031249999999999854],
 [-0.5953924651018017, -0.03124999999999981],
 [0.541265877365274, 0.06249999999999972],
 [0.4330127018922192, 0.06249999999999975],
 [0.3247595264191644, 0.06249999999999983],
 [0.21650635094610954, 0.06249999999999986],
 [0.10825317547305471, 0.06249999999999989],
 [-1.1102230246251565e-16, 0.062499999999999944],
 [-0.10825317547305496, 0.0625],
 [-0.21650635094610976, 0.06250000000000003],
 [-0.3247595264191646, 0.06250000000000008],
 [-0.4330127018922194, 0.06250000000000012],
 [-0.5412658773652742, 0.06250000000000017],
 [0.4871392896287466, 0.15624999999999975],
 [0.3788861141556918, 0.15624999999999978],
 [0.27063293868263694, 0.15624999999999986],
 [0.16237976320958214, 0.1562499999999999],
 [0.054126587736527315, 0.15624999999999992],
 [-0.05412658773652751, 0.15625],
 [-0.16237976320958236, 0.15625000000000003],
 [-0.27063293868263716, 0.15625000000000006],
 [-0.378886114155692, 0.1562500000000001],
 [-0.4871392896287468, 0.15625000000000017],
 [0.43301270189221924, 0.24999999999999978],
 [0.3247595264191644, 0.2499999999999998],
 [0.21650635094610957, 0.2499999999999999],
 [0.10825317547305474, 0.24999999999999992],
 [-8.326672684688674e-17, 0.24999999999999994],
 [-0.10825317547305491, 0.25],
 [-0.2165063509461097, 0.25000000000000006],
 [-0.32475952641916456, 0.2500000000000001],
 [-0.43301270189221935, 0.2500000000000001],
 [0.37888611415569184, 0.3437499999999998],
 [0.270632938682637, 0.34374999999999983],
 [0.16237976320958217, 0.3437499999999999],
 [0.05412658773652734, 0.34374999999999994],
 [-0.05412658773652748, 0.34375],
 [-0.1623797632095823, 0.34375000000000006],
 [-0.2706329386826371, 0.3437500000000001],
 [-0.37888611415569196, 0.3437500000000001],
 [0.32475952641916445, 0.43749999999999983],
 [0.2165063509461096, 0.4374999999999999],
 [0.10825317547305478, 0.4374999999999999],
 [-5.551115123125783e-17, 0.4374999999999999],
 [-0.10825317547305488, 0.43750000000000006],
 [-0.2165063509461097, 0.4375000000000001],
 [-0.3247595264191645, 0.4375000000000001],
 [0.27063293868263705, 0.5312499999999999],
 [0.1623797632095822, 0.5312499999999999],
 [0.054126587736527385, 0.5312499999999999],
 [-0.054126587736527426, 0.53125],
 [-0.16237976320958225, 0.5312500000000001],
 [-0.2706329386826371, 0.5312500000000001],
 [0.21650635094610965, 0.6249999999999999],
 [0.10825317547305482, 0.6249999999999999],
 [-1.3877787807814457e-17, 0.625],
 [-0.10825317547305482, 0.625],
 [-0.21650635094610965, 0.6250000000000001],
 [0.16237976320958225, 0.7187499999999999],
 [0.05412658773652742, 0.71875],
 [-0.0541265877365274, 0.71875],
 [-0.16237976320958222, 0.71875],
 [0.10825317547305485, 0.8125],
 [2.7755575615628914e-17, 0.8125],
 [-0.1082531754730548, 0.8125],
 [0.054126587736527454, 0.90625],
 [-0.05412658773652737, 0.90625],
 [6.123233995736766e-17, 1.0]])

def test1(x=None):
    # Failure for x > 23
    slc = slice(None,x,None)
    plt.scatter(points[slc,0], points[slc,1])
    matplotlib.delaunay.Triangulation(points[slc,0], points[slc,1])

def test2(x=None):
    # Randomizing the rows seems to have no effect
    # Failure for x > 23
    slc = slice(None,x,None)
    idx = np.arange(points.shape[0])
    np.random.shuffle(idx)
    points2 = np.array([points[i] for i in idx])
    plt.scatter(points2[slc,0], points2[slc,1])
    matplotlib.delaunay.Triangulation(points[slc,0], points[slc,1])

if __name__ == '__main__':
    test2()
    #test2(22)

------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to