Skip to content

[Bug]: Bar Chart with multiple dataset stacks reanimating when data changes #1233

Open

Description

@MigdaliaBrito

Would you like to work on a fix?

  • Check this if you would like to implement a PR, we are more than happy to help you go through the process.

Current and expected behavior

I see this only occur with bar charts with data sets that have multiple stack ids. But when the data changes, it does not animate gracefully the difference for the stacks. It does for the first stack collection, but the rest it resets the animation. I found an example in the chartjs documentation that does what I expect it to do but when using react-chartjs-2 it does not replicate the expected behavior.

https://www.chartjs.org/docs/latest/samples/bar/stacked-groups.html

Reproduction

https://codesandbox.io/p/devbox/silly-aj-gqvwvr?file=%2FApp.tsx%3A60%2C16&workspaceId=d2c104b9-4ce0-406f-9621-548a17948260

chart.js version

4.0.0

react-chartjs-2 version

5.0.0

Possible solution

No response

Activity

  1. rafrocha commented on Nov 5, 2024

    @rafrocha

    +1

  2. MigdaliaBrito commented on Nov 5, 2024

    @MigdaliaBrito
    Author

    Some additional context around the use case:
    We have a component that changes data inside of the dataset. Its just a state update. I would think this to be handled by the library.

  3. MigdaliaBrito commented on Nov 5, 2024

    @MigdaliaBrito
    Author

    In the codesandbox I modified it to do this:

      const handleClick = () => {
        const chart = chartRef.current;
    
        if (chart) {
          chart.data.datasets.forEach((dataset) => {
            dataset.data = labels.map(() => Math.floor(Math.random() * 201) - 100);
          });
          chart.update();
        }
      };
    

    Updating the data directly seems to prevent this but I am thinking react-chartjs-2 should be smart enough to handle state changes and change appropriately.

  4. MigdaliaBrito commented on Nov 5, 2024

    @MigdaliaBrito
    Author

    Hmm after further investigation if I just modify the data inside the dataset (not through chart update) then it behaves as expected. Perhaps this is not a library issue just how the data is architected to be passed down to the chart. Also my code link has been modified to include the version where the data changes smoothly

  5. MigdaliaBrito commented on Nov 6, 2024

    @MigdaliaBrito
    Author

    I believe the issue we face likely can be solved as it was solved before here: #648

    I think perhaps the addition of two stacks confuses the library?

  6. MigdaliaBrito commented on Nov 6, 2024

    @MigdaliaBrito
    Author
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions