The scatter
function used to paint different data points that are actually full circles.
They can be of different sizes. The s parameter (to ax.scatter
) contains the sizes of data points.
Form the documentation of matplotlib:
The marker size in points**2 (typographic points are 1/72 in.). Default is rcParams['lines.markersize'] ** 2.
To check distance between to points , I converted them to inches and then used :
if (math.sqrt(allsizes[i]/3.14) + math.sqrt(allsizes[j])/3.14) > distance/72:
print('overlap')
For some reason it almost works, but in cases of small overlap, it fails to find it. When it says there is overlap, there is overlap.
I am not sure if the sizes are R^2
or pi*R^2
, but none of these options seems to work.
What did I do wrong?
Adding calculation:
def calc_distance(ax,x,y):
diffy = abs(y[i] - y[j])
diffx = abs(matplotlib.dates.date2num(x[i]) - matplotlib.dates.date2num(x[j]))
origin = ax.figure.dpi_scale_trans.transform((0, 0))
vec = ax.figure.dpi_scale_trans.transform((diffx, diffy))
vec = np.array(vec) - np.array(origin)
distance = np.linalg.norm(vec, ord=2) # distange on display node
return distance