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

FeaturesLineWidget #200

Open
wants to merge 10 commits into
base: main
Choose a base branch
from

Conversation

zoccoler
Copy link
Contributor

Hi @dstansby ,

As suggested in #184 , I am transferring the code here without the LineWidget.

This PR brings a BaseLineWidget and a FeaturesLineWidget to napari-matplotlib, where the FeaturesLineWidget has an object-id field capable of grouping objects before plotting, thus displaying individual line plots for each object.

Best,
Marcelo

zoccoler and others added 9 commits October 28, 2022 17:06
Co-authored-by: David Stansby <dstansby@gmail.com>
- make LineBaseWidget
- make LineWidget for plotting intensities under shapes layer
- make FeaturesLineWidget for plotting features from labels layer (grouped by a label column matching labels in layer)
Copy link
Member

@dstansby dstansby left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just having a play around with this, and I'm confused by what the "object-id" selector is for? Why are there not just two selectors that select what is being plotted on the x/y axes?

And following on from that, how is this different from the FeaturesScatterWidget? Could we add the functionality desired by just doing exactly the same as FeaturesScatterWidget, but joining the scatter points with a line?

@@ -210,6 +210,9 @@ def current_z(self) -> int:
Current z-step of the napari viewer.
"""
return self.viewer.dims.current_step[0]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return self.viewer.dims.current_step[0]

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume the line self.viewer.dims.current_step[-3] is a bug fix below for datasets that have >= 4 dimensions?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can drop it for now since it does no affect this PR anymore. It had to do with other dimensions, yes

@zoccoler
Copy link
Contributor Author

zoccoler commented Aug 1, 2023

Just having a play around with this, and I'm confused by what the "object-id" selector is for? Why are there not just two selectors that select what is being plotted on the x/y axes?

Good question. So the object_id is the factor that groups elements from the table using the .groupby from pandas. This allows individual lines for each label with different colors. Typically this is just a column named 'label' in the table containing the label numbers, but as this can vary from different people and I cannot anticipate what it will be, so I chose to add it in the interface and let the user decide.

By the way, I noticed I was still calling 'label' in other places, so I renamed them to object_id now to make it more general.

And following on from that, how is this different from the FeaturesScatterWidget? Could we add the functionality desired by just doing exactly the same as FeaturesScatterWidget, but joining the scatter points with a line?

Hmm I am not sure. Over there, the .scatter is being used, which returns a PathCollection right? I am interested in having access to Line2D objects. That also why I was adding a _lines list as a property of the class before, to store current Line2D artists in the plot, because I thought it would be faster to update existing lines data with .set_xdata and .set_ydata than redraw all the lines.

@zoccoler
Copy link
Contributor Author

Hi @dstansby ,

Did you have some time to consider this feature?

Thanks for your time on reviewing this!

@zoccoler
Copy link
Contributor Author

This would close #60

@dstansby dstansby added the New feature New feature or request label Jan 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
New feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants