-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Description
dash 3.0.2
dash-core-components 2.0.0
dash-html-components 2.0.0
dash-table 5.0.0
plotly 6.0.1
Describe the bug
When passing a figure as a State
variable in a callback, the data
attribute of the figure seems to be modified. This results in it being difficult to access the x, y data from the figure and use it within the callback.
Expected behavior
Previously, the data
attribute had the same structure as accessing the data
attribute from the figure object itself which allowed for access to the data in the trace. The example below should make this explanation clearer.
Example
from dash import Dash, html, dcc, callback, Output, Input, State
from dash.exceptions import PreventUpdate
import dash_bootstrap_components as dbc
import plotly.express as px
import json
app = Dash(__name__)
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length")
app.layout = html.Div(
[
html.Div(dcc.Graph(id="plot", figure=fig)),
dbc.Button(id="button-id", children="Callback!"),
html.H1("Raw Plot Data:"),
html.Div(children=json.dumps(fig["data"][0].to_json(), indent=2)),
html.H1("Plot Data Through Callback:"),
html.Div(id="callback-output")
]
)
@callback(
Output("callback-output", "children"),
Input("button-id", "n_clicks"),
State("plot", "figure"),
prevent_initial_call=True
)
def display_data(n_clicks, figure):
if n_clicks > 0:
return json.dumps(figure["data"][0], indent=2)
else:
raise PreventUpdate
if __name__ == '__main__':
app.run(debug=True, dev_tools_hot_reload=False)
The example is a simple Dash app which displays the data
attribute of the figure directly from the figure object and after it is used as a State
variable in the callback.
The output of fig["data"][0]
is the trace as expected, however, accessing figure["data"][0]
within the callback gives the following:
{
"hovertemplate": "sepal_width=%{x}<br>sepal_length=%{y}<extra></extra>",
"legendgroup": "",
"marker": {
"color": "#636efa",
"symbol": "circle"
},
"mode": "markers",
"name": "",
"orientation": "v",
"showlegend": false,
"x": {
"dtype": "f8",
"bdata": "AAAAAAAADEAAAAAAAAAIQJqZmZmZmQlAzczMzMzMCEDNzMzMzMwMQDMzMzMzMw9AMzMzMzMzC0AzMzMzMzMLQDMzMzMzMwdAzczMzMzMCECamZmZmZkNQDMzMzMzMwtAAAAAAAAACEAAAAAAAAAIQAAAAAAAABBAmpmZmZmZEUAzMzMzMzMPQAAAAAAAAAxAZmZmZmZmDkBmZmZmZmYOQDMzMzMzMwtAmpmZmZmZDUDNzMzMzMwMQGZmZmZmZgpAMzMzMzMzC0AAAAAAAAAIQDMzMzMzMwtAAAAAAAAADEAzMzMzMzMLQJqZmZmZmQlAzczMzMzMCEAzMzMzMzMLQGZmZmZmZhBAzczMzMzMEEDNzMzMzMwIQJqZmZmZmQlAAAAAAAAADEDNzMzMzMwIQAAAAAAAAAhAMzMzMzMzC0AAAAAAAAAMQGZmZmZmZgJAmpmZmZmZCUAAAAAAAAAMQGZmZmZmZg5AAAAAAAAACEBmZmZmZmYOQJqZmZmZmQlAmpmZmZmZDUBmZmZmZmYKQJqZmZmZmQlAmpmZmZmZCUDNzMzMzMwIQGZmZmZmZgJAZmZmZmZmBkBmZmZmZmYGQGZmZmZmZgpAMzMzMzMzA0AzMzMzMzMHQJqZmZmZmQVAAAAAAAAAAEAAAAAAAAAIQJqZmZmZmQFAMzMzMzMzB0AzMzMzMzMHQM3MzMzMzAhAAAAAAAAACECamZmZmZkFQJqZmZmZmQFAAAAAAAAABECamZmZmZkJQGZmZmZmZgZAAAAAAAAABEBmZmZmZmYGQDMzMzMzMwdAAAAAAAAACEBmZmZmZmYGQAAAAAAAAAhAMzMzMzMzB0DNzMzMzMwEQDMzMzMzMwNAMzMzMzMzA0CamZmZmZkFQJqZmZmZmQVAAAAAAAAACEAzMzMzMzMLQM3MzMzMzAhAZmZmZmZmAkAAAAAAAAAIQAAAAAAAAARAzczMzMzMBEAAAAAAAAAIQM3MzMzMzARAZmZmZmZmAkCamZmZmZkFQAAAAAAAAAhAMzMzMzMzB0AzMzMzMzMHQAAAAAAAAARAZmZmZmZmBkBmZmZmZmYKQJqZmZmZmQVAAAAAAAAACEAzMzMzMzMHQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAEQDMzMzMzMwdAAAAAAAAABEDNzMzMzMwMQJqZmZmZmQlAmpmZmZmZBUAAAAAAAAAIQAAAAAAAAARAZmZmZmZmBkCamZmZmZkJQAAAAAAAAAhAZmZmZmZmDkDNzMzMzMwEQJqZmZmZmQFAmpmZmZmZCUBmZmZmZmYGQGZmZmZmZgZAmpmZmZmZBUBmZmZmZmYKQJqZmZmZmQlAZmZmZmZmBkAAAAAAAAAIQGZmZmZmZgZAAAAAAAAACEBmZmZmZmYGQGZmZmZmZg5AZmZmZmZmBkBmZmZmZmYGQM3MzMzMzARAAAAAAAAACEAzMzMzMzMLQM3MzMzMzAhAAAAAAAAACEDNzMzMzMwIQM3MzMzMzAhAzczMzMzMCECamZmZmZkFQJqZmZmZmQlAZmZmZmZmCkAAAAAAAAAIQAAAAAAAAARAAAAAAAAACEAzMzMzMzMLQAAAAAAAAAhA",
"_inputArray": {
"0": 3.5,
"1": 3,
"2": 3.2,
"3": 3.1,
"4": 3.6,
"5": 3.9,
"6": 3.4,
"7": 3.4,
"8": 2.9,
"9": 3.1,
"10": 3.7,
"11": 3.4,
"12": 3,
"13": 3,
"14": 4,
"15": 4.4,
"16": 3.9,
"17": 3.5,
"18": 3.8,
"19": 3.8,
"20": 3.4,
"21": 3.7,
"22": 3.6,
"23": 3.3,
"24": 3.4,
"25": 3,
"26": 3.4,
"27": 3.5,
"28": 3.4,
"29": 3.2,
"30": 3.1,
"31": 3.4,
"32": 4.1,
"33": 4.2,
"34": 3.1,
"35": 3.2,
"36": 3.5,
"37": 3.1,
"38": 3,
"39": 3.4,
"40": 3.5,
"41": 2.3,
"42": 3.2,
"43": 3.5,
"44": 3.8,
"45": 3,
"46": 3.8,
"47": 3.2,
"48": 3.7,
"49": 3.3,
"50": 3.2,
"51": 3.2,
"52": 3.1,
"53": 2.3,
"54": 2.8,
"55": 2.8,
"56": 3.3,
"57": 2.4,
"58": 2.9,
"59": 2.7,
"60": 2,
"61": 3,
"62": 2.2,
"63": 2.9,
"64": 2.9,
"65": 3.1,
"66": 3,
"67": 2.7,
"68": 2.2,
"69": 2.5,
"70": 3.2,
"71": 2.8,
"72": 2.5,
"73": 2.8,
"74": 2.9,
"75": 3,
"76": 2.8,
"77": 3,
"78": 2.9,
"79": 2.6,
"80": 2.4,
"81": 2.4,
"82": 2.7,
"83": 2.7,
"84": 3,
"85": 3.4,
"86": 3.1,
"87": 2.3,
"88": 3,
"89": 2.5,
"90": 2.6,
"91": 3,
"92": 2.6,
"93": 2.3,
"94": 2.7,
"95": 3,
"96": 2.9,
"97": 2.9,
"98": 2.5,
"99": 2.8,
"100": 3.3,
"101": 2.7,
"102": 3,
"103": 2.9,
"104": 3,
"105": 3,
"106": 2.5,
"107": 2.9,
"108": 2.5,
"109": 3.6,
"110": 3.2,
"111": 2.7,
"112": 3,
"113": 2.5,
"114": 2.8,
"115": 3.2,
"116": 3,
"117": 3.8,
"118": 2.6,
"119": 2.2,
"120": 3.2,
"121": 2.8,
"122": 2.8,
"123": 2.7,
"124": 3.3,
"125": 3.2,
"126": 2.8,
"127": 3,
"128": 2.8,
"129": 3,
"130": 2.8,
"131": 3.8,
"132": 2.8,
"133": 2.8,
"134": 2.6,
"135": 3,
"136": 3.4,
"137": 3.1,
"138": 3,
"139": 3.1,
"140": 3.1,
"141": 3.1,
"142": 2.7,
"143": 3.2,
"144": 3.3,
"145": 3,
"146": 2.5,
"147": 3,
"148": 3.4,
"149": 3,
"bdata": "AAAAAAAADEAAAAAAAAAIQJqZmZmZmQlAzczMzMzMCEDNzMzMzMwMQDMzMzMzMw9AMzMzMzMzC0AzMzMzMzMLQDMzMzMzMwdAzczMzMzMCECamZmZmZkNQDMzMzMzMwtAAAAAAAAACEAAAAAAAAAIQAAAAAAAABBAmpmZmZmZEUAzMzMzMzMPQAAAAAAAAAxAZmZmZmZmDkBmZmZmZmYOQDMzMzMzMwtAmpmZmZmZDUDNzMzMzMwMQGZmZmZmZgpAMzMzMzMzC0AAAAAAAAAIQDMzMzMzMwtAAAAAAAAADEAzMzMzMzMLQJqZmZmZmQlAzczMzMzMCEAzMzMzMzMLQGZmZmZmZhBAzczMzMzMEEDNzMzMzMwIQJqZmZmZmQlAAAAAAAAADEDNzMzMzMwIQAAAAAAAAAhAMzMzMzMzC0AAAAAAAAAMQGZmZmZmZgJAmpmZmZmZCUAAAAAAAAAMQGZmZmZmZg5AAAAAAAAACEBmZmZmZmYOQJqZmZmZmQlAmpmZmZmZDUBmZmZmZmYKQJqZmZmZmQlAmpmZmZmZCUDNzMzMzMwIQGZmZmZmZgJAZmZmZmZmBkBmZmZmZmYGQGZmZmZmZgpAMzMzMzMzA0AzMzMzMzMHQJqZmZmZmQVAAAAAAAAAAEAAAAAAAAAIQJqZmZmZmQFAMzMzMzMzB0AzMzMzMzMHQM3MzMzMzAhAAAAAAAAACECamZmZmZkFQJqZmZmZmQFAAAAAAAAABECamZmZmZkJQGZmZmZmZgZAAAAAAAAABEBmZmZmZmYGQDMzMzMzMwdAAAAAAAAACEBmZmZmZmYGQAAAAAAAAAhAMzMzMzMzB0DNzMzMzMwEQDMzMzMzMwNAMzMzMzMzA0CamZmZmZkFQJqZmZmZmQVAAAAAAAAACEAzMzMzMzMLQM3MzMzMzAhAZmZmZmZmAkAAAAAAAAAIQAAAAAAAAARAzczMzMzMBEAAAAAAAAAIQM3MzMzMzARAZmZmZmZmAkCamZmZmZkFQAAAAAAAAAhAMzMzMzMzB0AzMzMzMzMHQAAAAAAAAARAZmZmZmZmBkBmZmZmZmYKQJqZmZmZmQVAAAAAAAAACEAzMzMzMzMHQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAEQDMzMzMzMwdAAAAAAAAABEDNzMzMzMwMQJqZmZmZmQlAmpmZmZmZBUAAAAAAAAAIQAAAAAAAAARAZmZmZmZmBkCamZmZmZkJQAAAAAAAAAhAZmZmZmZmDkDNzMzMzMwEQJqZmZmZmQFAmpmZmZmZCUBmZmZmZmYGQGZmZmZmZgZAmpmZmZmZBUBmZmZmZmYKQJqZmZmZmQlAZmZmZmZmBkAAAAAAAAAIQGZmZmZmZgZAAAAAAAAACEBmZmZmZmYGQGZmZmZmZg5AZmZmZmZmBkBmZmZmZmYGQM3MzMzMzARAAAAAAAAACEAzMzMzMzMLQM3MzMzMzAhAAAAAAAAACEDNzMzMzMwIQM3MzMzMzAhAzczMzMzMCECamZmZmZkFQJqZmZmZmQlAZmZmZmZmCkAAAAAAAAAIQAAAAAAAAARAAAAAAAAACEAzMzMzMzMLQAAAAAAAAAhA",
"dtype": "f8",
"shape": "150"
}
},
"xaxis": "x",
"y": {
"dtype": "f8",
"bdata": "ZmZmZmZmFECamZmZmZkTQM3MzMzMzBJAZmZmZmZmEkAAAAAAAAAUQJqZmZmZmRVAZmZmZmZmEkAAAAAAAAAUQJqZmZmZmRFAmpmZmZmZE0CamZmZmZkVQDMzMzMzMxNAMzMzMzMzE0AzMzMzMzMRQDMzMzMzMxdAzczMzMzMFkCamZmZmZkVQGZmZmZmZhRAzczMzMzMFkBmZmZmZmYUQJqZmZmZmRVAZmZmZmZmFEBmZmZmZmYSQGZmZmZmZhRAMzMzMzMzE0AAAAAAAAAUQAAAAAAAABRAzczMzMzMFEDNzMzMzMwUQM3MzMzMzBJAMzMzMzMzE0CamZmZmZkVQM3MzMzMzBRAAAAAAAAAFkCamZmZmZkTQAAAAAAAABRAAAAAAAAAFkCamZmZmZkTQJqZmZmZmRFAZmZmZmZmFEAAAAAAAAAUQAAAAAAAABJAmpmZmZmZEUAAAAAAAAAUQGZmZmZmZhRAMzMzMzMzE0BmZmZmZmYUQGZmZmZmZhJAMzMzMzMzFUAAAAAAAAAUQAAAAAAAABxAmpmZmZmZGUCamZmZmZkbQAAAAAAAABZAAAAAAAAAGkDNzMzMzMwWQDMzMzMzMxlAmpmZmZmZE0BmZmZmZmYaQM3MzMzMzBRAAAAAAAAAFECamZmZmZkXQAAAAAAAABhAZmZmZmZmGEBmZmZmZmYWQM3MzMzMzBpAZmZmZmZmFkAzMzMzMzMXQM3MzMzMzBhAZmZmZmZmFkCamZmZmZkXQGZmZmZmZhhAMzMzMzMzGUBmZmZmZmYYQJqZmZmZmRlAZmZmZmZmGkAzMzMzMzMbQM3MzMzMzBpAAAAAAAAAGEDNzMzMzMwWQAAAAAAAABZAAAAAAAAAFkAzMzMzMzMXQAAAAAAAABhAmpmZmZmZFUAAAAAAAAAYQM3MzMzMzBpAMzMzMzMzGUBmZmZmZmYWQAAAAAAAABZAAAAAAAAAFkBmZmZmZmYYQDMzMzMzMxdAAAAAAAAAFEBmZmZmZmYWQM3MzMzMzBZAzczMzMzMFkDNzMzMzMwYQGZmZmZmZhRAzczMzMzMFkAzMzMzMzMZQDMzMzMzMxdAZmZmZmZmHEAzMzMzMzMZQAAAAAAAABpAZmZmZmZmHkCamZmZmZkTQDMzMzMzMx1AzczMzMzMGkDNzMzMzMwcQAAAAAAAABpAmpmZmZmZGUAzMzMzMzMbQM3MzMzMzBZAMzMzMzMzF0CamZmZmZkZQAAAAAAAABpAzczMzMzMHkDNzMzMzMweQAAAAAAAABhAmpmZmZmZG0BmZmZmZmYWQM3MzMzMzB5AMzMzMzMzGUDNzMzMzMwaQM3MzMzMzBxAzczMzMzMGEBmZmZmZmYYQJqZmZmZmRlAzczMzMzMHECamZmZmZkdQJqZmZmZmR9AmpmZmZmZGUAzMzMzMzMZQGZmZmZmZhhAzczMzMzMHkAzMzMzMzMZQJqZmZmZmRlAAAAAAAAAGECamZmZmZkbQM3MzMzMzBpAmpmZmZmZG0AzMzMzMzMXQDMzMzMzMxtAzczMzMzMGkDNzMzMzMwaQDMzMzMzMxlAAAAAAAAAGkDNzMzMzMwYQJqZmZmZmRdA",
"_inputArray": {
"0": 5.1,
"1": 4.9,
"2": 4.7,
"3": 4.6,
"4": 5,
"5": 5.4,
"6": 4.6,
"7": 5,
"8": 4.4,
"9": 4.9,
"10": 5.4,
"11": 4.8,
"12": 4.8,
"13": 4.3,
"14": 5.8,
"15": 5.7,
"16": 5.4,
"17": 5.1,
"18": 5.7,
"19": 5.1,
"20": 5.4,
"21": 5.1,
"22": 4.6,
"23": 5.1,
"24": 4.8,
"25": 5,
"26": 5,
"27": 5.2,
"28": 5.2,
"29": 4.7,
"30": 4.8,
"31": 5.4,
"32": 5.2,
"33": 5.5,
"34": 4.9,
"35": 5,
"36": 5.5,
"37": 4.9,
"38": 4.4,
"39": 5.1,
"40": 5,
"41": 4.5,
"42": 4.4,
"43": 5,
"44": 5.1,
"45": 4.8,
"46": 5.1,
"47": 4.6,
"48": 5.3,
"49": 5,
"50": 7,
"51": 6.4,
"52": 6.9,
"53": 5.5,
"54": 6.5,
"55": 5.7,
"56": 6.3,
"57": 4.9,
"58": 6.6,
"59": 5.2,
"60": 5,
"61": 5.9,
"62": 6,
"63": 6.1,
"64": 5.6,
"65": 6.7,
"66": 5.6,
"67": 5.8,
"68": 6.2,
"69": 5.6,
"70": 5.9,
"71": 6.1,
"72": 6.3,
"73": 6.1,
"74": 6.4,
"75": 6.6,
"76": 6.8,
"77": 6.7,
"78": 6,
"79": 5.7,
"80": 5.5,
"81": 5.5,
"82": 5.8,
"83": 6,
"84": 5.4,
"85": 6,
"86": 6.7,
"87": 6.3,
"88": 5.6,
"89": 5.5,
"90": 5.5,
"91": 6.1,
"92": 5.8,
"93": 5,
"94": 5.6,
"95": 5.7,
"96": 5.7,
"97": 6.2,
"98": 5.1,
"99": 5.7,
"100": 6.3,
"101": 5.8,
"102": 7.1,
"103": 6.3,
"104": 6.5,
"105": 7.6,
"106": 4.9,
"107": 7.3,
"108": 6.7,
"109": 7.2,
"110": 6.5,
"111": 6.4,
"112": 6.8,
"113": 5.7,
"114": 5.8,
"115": 6.4,
"116": 6.5,
"117": 7.7,
"118": 7.7,
"119": 6,
"120": 6.9,
"121": 5.6,
"122": 7.7,
"123": 6.3,
"124": 6.7,
"125": 7.2,
"126": 6.2,
"127": 6.1,
"128": 6.4,
"129": 7.2,
"130": 7.4,
"131": 7.9,
"132": 6.4,
"133": 6.3,
"134": 6.1,
"135": 7.7,
"136": 6.3,
"137": 6.4,
"138": 6,
"139": 6.9,
"140": 6.7,
"141": 6.9,
"142": 5.8,
"143": 6.8,
"144": 6.7,
"145": 6.7,
"146": 6.3,
"147": 6.5,
"148": 6.2,
"149": 5.9,
"bdata": "ZmZmZmZmFECamZmZmZkTQM3MzMzMzBJAZmZmZmZmEkAAAAAAAAAUQJqZmZmZmRVAZmZmZmZmEkAAAAAAAAAUQJqZmZmZmRFAmpmZmZmZE0CamZmZmZkVQDMzMzMzMxNAMzMzMzMzE0AzMzMzMzMRQDMzMzMzMxdAzczMzMzMFkCamZmZmZkVQGZmZmZmZhRAzczMzMzMFkBmZmZmZmYUQJqZmZmZmRVAZmZmZmZmFEBmZmZmZmYSQGZmZmZmZhRAMzMzMzMzE0AAAAAAAAAUQAAAAAAAABRAzczMzMzMFEDNzMzMzMwUQM3MzMzMzBJAMzMzMzMzE0CamZmZmZkVQM3MzMzMzBRAAAAAAAAAFkCamZmZmZkTQAAAAAAAABRAAAAAAAAAFkCamZmZmZkTQJqZmZmZmRFAZmZmZmZmFEAAAAAAAAAUQAAAAAAAABJAmpmZmZmZEUAAAAAAAAAUQGZmZmZmZhRAMzMzMzMzE0BmZmZmZmYUQGZmZmZmZhJAMzMzMzMzFUAAAAAAAAAUQAAAAAAAABxAmpmZmZmZGUCamZmZmZkbQAAAAAAAABZAAAAAAAAAGkDNzMzMzMwWQDMzMzMzMxlAmpmZmZmZE0BmZmZmZmYaQM3MzMzMzBRAAAAAAAAAFECamZmZmZkXQAAAAAAAABhAZmZmZmZmGEBmZmZmZmYWQM3MzMzMzBpAZmZmZmZmFkAzMzMzMzMXQM3MzMzMzBhAZmZmZmZmFkCamZmZmZkXQGZmZmZmZhhAMzMzMzMzGUBmZmZmZmYYQJqZmZmZmRlAZmZmZmZmGkAzMzMzMzMbQM3MzMzMzBpAAAAAAAAAGEDNzMzMzMwWQAAAAAAAABZAAAAAAAAAFkAzMzMzMzMXQAAAAAAAABhAmpmZmZmZFUAAAAAAAAAYQM3MzMzMzBpAMzMzMzMzGUBmZmZmZmYWQAAAAAAAABZAAAAAAAAAFkBmZmZmZmYYQDMzMzMzMxdAAAAAAAAAFEBmZmZmZmYWQM3MzMzMzBZAzczMzMzMFkDNzMzMzMwYQGZmZmZmZhRAzczMzMzMFkAzMzMzMzMZQDMzMzMzMxdAZmZmZmZmHEAzMzMzMzMZQAAAAAAAABpAZmZmZmZmHkCamZmZmZkTQDMzMzMzMx1AzczMzMzMGkDNzMzMzMwcQAAAAAAAABpAmpmZmZmZGUAzMzMzMzMbQM3MzMzMzBZAMzMzMzMzF0CamZmZmZkZQAAAAAAAABpAzczMzMzMHkDNzMzMzMweQAAAAAAAABhAmpmZmZmZG0BmZmZmZmYWQM3MzMzMzB5AMzMzMzMzGUDNzMzMzMwaQM3MzMzMzBxAzczMzMzMGEBmZmZmZmYYQJqZmZmZmRlAzczMzMzMHECamZmZmZkdQJqZmZmZmR9AmpmZmZmZGUAzMzMzMzMZQGZmZmZmZhhAzczMzMzMHkAzMzMzMzMZQJqZmZmZmRlAAAAAAAAAGECamZmZmZkbQM3MzMzMzBpAmpmZmZmZG0AzMzMzMzMXQDMzMzMzMxtAzczMzMzMGkDNzMzMzMwaQDMzMzMzMxlAAAAAAAAAGkDNzMzMzMwYQJqZmZmZmRdA",
"dtype": "f8",
"shape": "150"
}
},
"yaxis": "y",
"type": "scatter"
}
so the data is there but it's now quite difficult to get at.
For comparison, running dash 2.17.0, plotly 5.22.0 gives the required behaviour. Is this something that was changed in plotly v6? Is there now an easy way to access the data in a callback?