I tried this and although it sort-of works, it doesn’t really do what I need. I tried using this:

import matplotlib.pyplot as plt

import matplotlib.path as mpath

import numpy as np

import copy

# create figure and axes

fig = plt.figure(figsize=(6, 6))

ax = fig.add_axes([.1, .1, .8, .8])

ax.set_xlim([-3, 3])

ax.set_ylim([-3, 3])

# a circle at the origin with radius 1

circle = plt.Circle((0, 0), 1, transform=ax.transData,

```
edgecolor='k', facecolor='none')
```

# from Phil’s example

exterior = mpath.Path.unit_rectangle()

interior = circle.get_path()

exterior = mpath.Path(copy.deepcopy(exterior.vertices),

```
copy.deepcopy(exterior.codes[:]))
```

interior.vertices = interior.vertices[::-1]

exterior.vertices *= 6

exterior.vertices -= 3

clip_path = mpath.Path(vertices=np.concatenate([exterior.vertices, interior.vertices]),

```
codes=np.concatenate([exterior.codes, interior.codes]))
```

# lines from the origin dividing the axes into 8 sectors

end_coords = [(3, 0), (3, 3), (0, 3), (-3, 3),

```
(-3, 0), (-3, -3), (0, -3), (3, -3)]
```

for x, y in end_coords:

```
line, = ax.plot((x, 0), (y, 0), color='k')
line.set_clip_path(clip_path, ax.transData)
```

ax.add_artist(circle)

plt.show()

and the result is the attached image with_clipping.png. You should see that the circle is no longer circular, and also there are weird line width issues. What I want it basically exactly like the attached without_clipping.png but with paths inside the circle removed.

Thanks

## ···

On 12 March 2013 16:43, Phil Elson <pelson.pub@…287…> wrote:

You could just use paths which have holes in them, making the exterior so broad that you wouldn’t notice the edge of the clipping. I’ve put together an example of doing just that:

import matplotlib.pyplot as plt

import matplotlib.path as mpath

import matplotlib.collections as mcol

import numpy as np

import copy

exterior = mpath.Path.unit_rectangle()

exterior = mpath.Path(copy.deepcopy(exterior.vertices),

copy.deepcopy(exterior.codes[:]))

exterior.vertices *= 4

exterior.vertices -= 2

interior = mpath.Path.unit_circle()

interior.vertices = interior.vertices[::-1]

clip_path = mpath.Path(vertices=np.concatenate([exterior.vertices, interior.vertices]),

codes=np.concatenate([exterior.codes, interior.codes]))

star = mpath.Path.unit_regular_star(6)

star.vertices *= 2.6

ax = plt.subplot(321)

col = mcol.PathCollection([clip_path], facecolor=‘yellow’)

ax.add_collection(col)

ax.set_title(‘Clip path’)

ax.set_xlim([-3, 3])

ax.set_ylim([-3, 3])

ax = plt.subplot(322)

col = mcol.PathCollection([star], facecolor=‘red’)

ax.add_collection(col)

ax.set_title(‘Target polygon’)

ax.set_xlim([-3, 3])

ax.set_ylim([-3, 3])

ax = plt.subplot2grid((3, 2), (1, 0), colspan=2, rowspan=2)

col = mcol.PathCollection([star])

col.set_clip_path(clip_path, ax.transData)

ax.add_collection(col)

ax.set_title(‘Target polygon clipped by clip_path’)

ax.set_xlim([-3, 3])

ax.set_ylim([-3, 3])

plt.tight_layout()

plt.show()

There are other options if this doesn’t cut the mustard.

HTH,

–

Dr Andrew Dawson

Atmospheric, Oceanic & Planetary Physics

Clarendon Laboratory

Parks Road

Oxford OX1 3PU, UK

Tel: +44 (0)1865 282438

Email: dawson@…4239…

Web Site: http://www2.physics.ox.ac.uk/contacts/people/dawson

On 12 March 2013 15:37, Andrew Dawson <dawson@…4239…> wrote:

Hi

I’d like to be able to clip a line so that the portion of it lying outside of a given polygon remains visible and the part that lies inside of the polygon is not visible. What I want is basically the opposite of:

line.set_clip_path(polygon)

which leaves only the part of the line inside the polygon visible. Is this possible?

I know I can just fill the polygon with the background color or something but this gets messy when there are other lines on the plot that don’t need to be clipped.

Thanks,

Andrew

Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester

Wave™: Endpoint Security, Q1 2013 and “remains a good choice” in the

endpoint security space. For insight on selecting the right partner to

tackle endpoint security challenges, access the full report.

http://p.sf.net/sfu/symantec-dev2dev

Matplotlib-users mailing list

Matplotlib-users@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-users