python - Matplotlib path contains_point -


i've discovered matplotlib path functionality , i'm using path.contains_point check whether points found within region defined 2 bezier curves.

i'm getting unexpected behaviour contains_point returning true when have expected return false. specifically, if point tested left of region seems incorrect. on right ok.

defining paths number of straight lines rather curves seems work expected.

a failing test case follows:

import matplotlib  import matplotlib.path mplpath import matplotlib.patches patches  import matplotlib.pyplot plt import pylab import pandas pd  print "mpl version {}".format(matplotlib.__version__) #1.5.0 print "mpl np version {}".format(matplotlib.__version__numpy__) #1.6  path_data = [     (mplpath.path.moveto, (2, 10)),     (mplpath.path.curve4, (0, 100)),     (mplpath.path.curve4, (20, 100)),     (mplpath.path.curve4, (40, 150)),     (mplpath.path.moveto, (40, 150)),     (mplpath.path.curve4, (42, 45)),     (mplpath.path.curve4, (20, 30)),     (mplpath.path.curve4, (2, 10))     ]  codes, verts = zip(*path_data) path = mplpath.path(verts, codes) patch = patches.pathpatch(path, facecolor='r', alpha=0.5)  #plot patch , of test points visualise fig = plt.figure() ax = fig.add_subplot(111) ax.add_patch(patch) ax.set_xlim(0, 50) ax.set_ylim(0, 200)  ax.scatter(1, 50) ax.scatter(20, 120) ax.scatter(20, 25) print path.contains_point((1,50)) #this should false true print path.contains_point((20,120)) #this should false true print path.contains_point((20, 25)) #this should false ,  plt.show() 

thanks in advance can provide. python version 2.7, anaconda distro on linux mint 17.3

jim

you have open path (extra moveto command). once comment out, works fine.

path_data = [     (mplpath.path.moveto, (2, 10)),     (mplpath.path.curve4, (0, 100)),     (mplpath.path.curve4, (20, 100)),     (mplpath.path.curve4, (40, 150)),   #  (mplpath.path.moveto, (40, 150)),     (mplpath.path.curve4, (42, 45)),     (mplpath.path.curve4, (20, 30)),     (mplpath.path.curve4, (2, 10))     ] 

Comments

Popular posts from this blog

java - nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet Hibernate+SpringMVC -

sql - Postgresql tables exists, but getting "relation does not exist" when querying -

asp.net mvc - breakpoint on javascript in CSHTML? -