Inverted color marks in matplotlib
I post here a schematic approach how to solve your problem with out any real python code, it might help though.
When  actually plotting you need to store all in some kind of two lists, which will enable you to access them later. 

For each element, bar and marker you can get the color.
For each marker you can find if it overlapping or inside a bar, for example you could usenxutils.pntpoly() [point in polygon test] from matplotlib itself.
Now you can decide on the best color. If you know the color of the bar in RGB format you can
calculate the completing color of the marker using some simple rules you can define.
When you got the color use the method set_color() or the appropriate method the object has.
I am using matplotlib to draw a bar chart with many different colors. I also draw a number of markers on the plot with scatter.   
Since I am already using many different colors for the bars, I do not want to use a separate contrasting color for the marks, as that would add a big limit to the color space I can choose my bars from.
Therefore, the question is whether it is possible to have scatter draw marks, not with a given color, but with a color that is the inverse of the color that happens to be behind any given mark, wherever it is placed.   
Also, note that the marks may fully overlap bars, partly overlap bars, or not overlap a bar at all.