Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Matplotlib backend: 'diamond' shape is too small, edges do not connect to it #751

Open
szhorvat opened this issue Jan 28, 2024 · 4 comments

Comments

@szhorvat
Copy link
Member

szhorvat commented Jan 28, 2024

Describe the bug

With the Matplotlib backend, the 'diamond' shape has two problems:

  • It is visually much smaller than other shapes. All shapes should appear to be the same size.
  • Edges do not connect to it. Up- and down-triangles also suffer from this.

To reproduce

igraph.plot(Graph.Full(3), backend='matplotlib', vertex_size=60, vertex_color='blue', vertex_shape=['rectangle', 'circle', 'diamond'])
image

The Cairo backend does not suffer from this (although it does cut the edges of the drawing off)

igraph.plot(Graph.Full(3), backend='cairo', vertex_size=60, vertex_color='blue', vertex_shape=['rectangle', 'circle', 'diamond'])
image

Version information

0.11.3

@szhorvat
Copy link
Member Author

Tip: A good starting point for sizes that look visually similar is to scale by area. See https://mathematica.stackexchange.com/a/85094/12

@iosonofabio
Copy link
Member

iosonofabio commented Jan 28, 2024

Just FYI, there are like 50 bugs of this type in the plotting, and they are all related to the same fundamental issue, lack of sufficiently flexible locators in mpl. I don't suggest you spend a whole lot of time describing in detail each and every one of them.

Tamas and I met with a few mpl folks to try and sort out the issue. Unfortunately it's not an easy fix for them and my time for this kind of operations is becoming more limited. It's a big job and I don't think worth it before the new Python interface is out.

Hope this saves you some frustration.

@szhorvat
Copy link
Member Author

I assume you are referring to the edges not joining up properly, right?

There's also the issue of the visual sizes. Perhaps the two issues should be split.

I can help with producing relative coordinates that make the different shapes look the same size if someone can put these into the code ...

@iosonofabio
Copy link
Member

As I already wrote, it's a big job and cannot be easily split into bit-sized quick fixes, AFAICT.

If you're interested in taking it on, perhaps you could start by reviewing our approach using custom Collections and the on-the-fly transforms they contain. From there, the most efficient path would probably be to reach out to the mpl folks - happy to connect you if you want. You would have to coordinate with them about a new system for dynamic coordinates and transforms, and see how that helps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants