Hey @adamltyson! Thank you for this post. I think it is a really interesting use case. I definitely need to think more about this, but a few thoughts.
I agree the dithered points is not ideal. However, I am curious if you did something like make all dithered points corresponding to a single point have the same face color and then encode the properties via edge color (or vice versa). That way, one knows that the dithered points are multiple annotations of the same point as opposed to multiple points. Again, not ideal, but may be sufficient for some cases.
We can consider contributing new marker types back to vispy (I believe they are defined here). As of now, all points within a single
MarkersVisual (the visual type we use to display points) must have the same symbol. Thus, if we wanted to have multiple point symbol types per visual, I think we would have to either add that functionality in or do something like a compound visual of multiple markers visuals (i.e., one per point symbol). I am not sure how much work this would be to change this, but it definitely seems useful. I can look more into this.
Also, I think this could be related to this issue discussing being able to rending single molecule localziation data (e.g., give each point a symbol that corresponds to the point spread function). In that issue, Loic links to this example of rendering many different point types with vispy.