SourceForge logo
SourceForge logo
Menu

matplotlib-users — Discussion related to using matplotlib

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
(3)
Jun
Jul
Aug
(12)
Sep
(12)
Oct
(56)
Nov
(65)
Dec
(37)
2004 Jan
(59)
Feb
(78)
Mar
(153)
Apr
(205)
May
(184)
Jun
(123)
Jul
(171)
Aug
(156)
Sep
(190)
Oct
(120)
Nov
(154)
Dec
(223)
2005 Jan
(184)
Feb
(267)
Mar
(214)
Apr
(286)
May
(320)
Jun
(299)
Jul
(348)
Aug
(283)
Sep
(355)
Oct
(293)
Nov
(232)
Dec
(203)
2006 Jan
(352)
Feb
(358)
Mar
(403)
Apr
(313)
May
(165)
Jun
(281)
Jul
(316)
Aug
(228)
Sep
(279)
Oct
(243)
Nov
(315)
Dec
(345)
2007 Jan
(260)
Feb
(323)
Mar
(340)
Apr
(319)
May
(290)
Jun
(296)
Jul
(221)
Aug
(292)
Sep
(242)
Oct
(248)
Nov
(242)
Dec
(332)
2008 Jan
(312)
Feb
(359)
Mar
(454)
Apr
(287)
May
(340)
Jun
(450)
Jul
(403)
Aug
(324)
Sep
(349)
Oct
(385)
Nov
(363)
Dec
(437)
2009 Jan
(500)
Feb
(301)
Mar
(409)
Apr
(486)
May
(545)
Jun
(391)
Jul
(518)
Aug
(497)
Sep
(492)
Oct
(429)
Nov
(357)
Dec
(310)
2010 Jan
(371)
Feb
(657)
Mar
(519)
Apr
(432)
May
(312)
Jun
(416)
Jul
(477)
Aug
(386)
Sep
(419)
Oct
(435)
Nov
(320)
Dec
(202)
2011 Jan
(321)
Feb
(413)
Mar
(299)
Apr
(215)
May
(284)
Jun
(203)
Jul
(207)
Aug
(314)
Sep
(321)
Oct
(259)
Nov
(347)
Dec
(209)
2012 Jan
(322)
Feb
(414)
Mar
(377)
Apr
(179)
May
(173)
Jun
(234)
Jul
(295)
Aug
(239)
Sep
(276)
Oct
(355)
Nov
(144)
Dec
(108)
2013 Jan
(170)
Feb
(89)
Mar
(204)
Apr
(133)
May
(142)
Jun
(89)
Jul
(160)
Aug
(180)
Sep
(69)
Oct
(136)
Nov
(83)
Dec
(32)
2014 Jan
(71)
Feb
(90)
Mar
(161)
Apr
(117)
May
(78)
Jun
(94)
Jul
(60)
Aug
(83)
Sep
(102)
Oct
(132)
Nov
(154)
Dec
(96)
2015 Jan
(45)
Feb
(138)
Mar
(176)
Apr
(132)
May
(119)
Jun
(124)
Jul
(77)
Aug
(31)
Sep
(34)
Oct
(22)
Nov
(23)
Dec
(9)
2016 Jan
(26)
Feb
(17)
Mar
(10)
Apr
(8)
May
(4)
Jun
(8)
Jul
(6)
Aug
(5)
Sep
(9)
Oct
(4)
Nov
Dec
2017 Jan
(5)
Feb
(7)
Mar
(1)
Apr
(5)
May
Jun
(3)
Jul
(6)
Aug
(1)
Sep
Oct
(2)
Nov
(1)
Dec
2018 Jan
Feb
Mar
Apr
(1)
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2020 Jan
Feb
Mar
Apr
May
(1)
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2025 Jan
(1)
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
S M T W T F S

1
(8)
2
(4)
3
(2)
4
(9)
5
(7)
6
(3)
7
(6)
8
(5)
9
(2)
10
(7)
11
(3)
12
(9)
13
(2)
14
(1)
15
(2)
16
(2)
17
(5)
18
(5)
19
(8)
20
(3)
21
(1)
22
(6)
23
(3)
24
(3)
25
(2)
26
(16)
27
(1)
28
(1)
29
(2)
30
(5)




Showing 1 results of 1

From: Benjamin R. <ben...@ou...> - 2013年04月14日 02:23:10
On Sat, Mar 23, 2013 at 12:09 AM, Russell Warren <ru...@pe...> wrote:
> I'm trying to use path.Path.contains_point for point-in-polygon testing
> and am running into a few different confusing situations. My specific
> issues/questions are:
>
> 1. I'm seeing different behaviour dependent on path direction (clockwise
> or counter-clockwise). Is there a "correct" direction to use?
>
No, it shouldn't matter, AFAICT. If there are differences, then it should
be reported as a bug.
>
> 2. What is the expected behaviour for Path.contains_point when the point
> is on a boundary?
>
> The original algorithm that it was based off of considered it outside
(again, from memory), but warns that floating-point errors renders this
point largely theoretical.
> 3. What is the radius parameter supposed to do? The docs say it "allows
> the path to be made slightly larger or smaller", but I'm clearly not
> understanding this properly (see the cw_path hit test failure with r=0.1
> below).
>
>
That is a terrible description of the functionality, I agree. Essentially,
if you have a positive radius, it effectively dilates the polygon for the
purposes of point-testing, while a negative radius effectively erodes the
polygon (but not for plotting... only for point testing).
> Here is a short example showing some issues with a unit rectangle...
>
> >>> from matplotlib.path import Path
> >>> cw_path = Path([[0,0], [0,1], [1,1], [1,0]])
> >>> ccw_path = Path([[0,0], [1,0], [1,1], [0,1]])
> >>> #Point on x axis not detected for either path...
> ... cw_path.contains_point([0.5, 0])
> 0
> >>> ccw_path.contains_point([0.5, 0])
> 0
> >>> #Add a large radius and ccw_path works, but not cw_path (!!?)...
> ... r = 0.1
> >>> cw_path.contains_point([0.5, 0], radius=r)
> 0
> >>> ccw_path.contains_point([0.5, 0], radius=r)
> 1
>
> The following ipython notebook has more detailed tests, but the main
> points are in the sample above.
> http://nbviewer.ipython.org/7e1b347b8b21b338bee1
>
> I've found at least one reference [1] online indicating that "this
> function is intended for use when mouse-clicking". Does that mean I should
> not use it for generic point-in-polygon testing?
>
>
That entirely depends upon your needs. The algorithm has very low
overhead, but it isn't highly optimized. This makes it ideal for
occasional point tests on arbitrary polygons (such as processing
mouse-clicks). But if you want to systematically do many point tests for
every single polygon, then maybe a more rigorously designed and implemented
algorithm (such as Shapely's) is more suited for your needs. Note that
Shapely's algorithm has higher overhead, but can test many more points
faster than ours.
I hope that clears things up!
Ben Root

Showing 1 results of 1

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /