plotly / dash

Data Apps & Dashboards for Python. No JavaScript Required.

Home Page:https://plotly.com/dash

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

allow deletion of data from Heat Figs with Patch()

cleaaum opened this issue · comments

I am trying to delete some data from a heat fig, and it doesn't seem to be possible with patch. With patch, you would return something like

fig = Patch()
del fig['data'][0][x][0]

to delete the first item in the heatfig. The issue is that the heatfig has the following structure:

{ "data": [
    {
      "x": ["2021-12-21T19:58:00.542000", "2021-12-21T19:58:01.542000", "2021-12-21T19:58:02.542000" ],
      "y": [13500.0, 13503.33591, 13506.67183 ],
      "z": [[599.8054, 581.1404, 570.4771 ],
              [678.9323, 644.2858, 610.9979 ],
              [576.6772, 568.9164, 565.6251 ],
    }]}

and so you would need to loop through each list in the z field to remove the first item as well (as the heatfig is a 3D array). We can't know ahead of time how many items are in the z field making it impossible to delete data.

Basically, if you want to remove the first timestamp in the fig, you would need the data to look like:

{ "data": [
    {
      "x": ["2021-12-21T19:58:01.542000", "2021-12-21T19:58:02.542000" ],
      "y": [13500.0, 13503.33591, 13506.67183 ],
      "z": [[581.1404, 570.4771 ],
              [644.2858, 610.9979 ],
              [568.9164, 565.6251 ],
    }]}

I don't want to load in the whole fig as state because it is quite large (and defeats the purpose of using a Patch()).
I haven't found a work around for this yet.

Short-term I'd suggest trying to do this with a client-side callback.

I recall us discussing this situation when we were designing the feature in the first place, and not coming up with a good syntax, since what you're suggesting doesn't have a simple Python analog - if you were modifying the real object rather than a Patch proxy, you'd do something like:

for row in fig['data'][0]['z']:
    del row[0]

but we can't iterate over something we don't have, so the only route I could think of would be some new syntax like:

del fig['data'][0]['z'][dash.FOREACH][0]

Hey, I'm looking to make my first contribution to an open source project and am looking to make this feature my first contribution.

I want to ensure that I'm following the correct procedures as I go through this process. Is there a general protocol to how one contributes to this project?

Thank you.

commented

hi @justinzhu17
Thank you for your interest in making your first contribution to Dash. Can you please email me. I need a little more info before I can guide you through the process.

my email: adam@plot.ly

hey @Coding-with-Adam
I've just sent you an email. Thank you so much for reaching out!