From 50c68200b578c5221033c6f2b80902b0e30deca8 Mon Sep 17 00:00:00 2001 From: Liam Connors Date: Wed, 5 Apr 2023 16:09:04 -0400 Subject: [PATCH 1/6] Update release.md --- release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.md b/release.md index d65f2cac0e..7f853f0e52 100644 --- a/release.md +++ b/release.md @@ -35,7 +35,7 @@ Manually update the versions to `X.Y.Z` in the files specified below. - `CHANGELOG.md` + update the release date - - `packages/python/plotly/README.md` + - `README.md` + this must be done at this point because the README gets baked into PyPI - `plotly/_widget_version.py`: + Update `__frontend_version__` to `^X.Y.Z` (Note the `^` prefix) From 4616fe5d97bc41a8dad006ee5ff745892788f2b3 Mon Sep 17 00:00:00 2001 From: akaalena Date: Sat, 29 Apr 2023 19:45:41 +0200 Subject: [PATCH 2/6] sliders: relayout method - part1 --- doc/python/sliders.md | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/doc/python/sliders.md b/doc/python/sliders.md index 2ebe84f040..173076453f 100644 --- a/doc/python/sliders.md +++ b/doc/python/sliders.md @@ -5,10 +5,10 @@ jupyter: text_representation: extension: .md format_name: markdown - format_version: '1.1' - jupytext_version: 1.1.7 + format_version: '1.3' + jupytext_version: 1.14.5 kernelspec: - display_name: Python 3 + display_name: Python 3 (ipykernel) language: python name: python3 language_info: @@ -20,7 +20,7 @@ jupyter: name: python nbconvert_exporter: python pygments_lexer: ipython3 - version: 3.7.2 + version: 3.8.16 plotly: description: How to add slider controls to your plots in Python with Plotly. display_as: controls @@ -89,6 +89,21 @@ The method determines which [plotly.js function](https://plot.ly/javascript/plot - `"animate"`: start or pause an animation +#### Relayout Method +The `"relayout"` method should be used when modifying the layout attributes of the graph.
+**Update One Layout Attribute**
+ +```python +import plotly.graph_objects as go +import numpy as np + +# Create figure +fig = go.Figure() + + +fig.show() +``` + ### Sliders in Plotly Express Plotly Express provide sliders, but with implicit animation using the `"animate"` method described above. The animation play button can be omitted by removing `updatemenus` in the `layout`: From 9065b2ea5b1a6daf3ed7165c4c7b4c9d0f5149b5 Mon Sep 17 00:00:00 2001 From: akaalena Date: Sun, 30 Apr 2023 20:08:44 +0200 Subject: [PATCH 3/6] update method: annotations and slider values --- doc/python/sliders.md | 72 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/doc/python/sliders.md b/doc/python/sliders.md index 173076453f..e7223aa390 100644 --- a/doc/python/sliders.md +++ b/doc/python/sliders.md @@ -89,9 +89,9 @@ The method determines which [plotly.js function](https://plot.ly/javascript/plot - `"animate"`: start or pause an animation -#### Relayout Method -The `"relayout"` method should be used when modifying the layout attributes of the graph.
-**Update One Layout Attribute**
+#### Update Method +The `"update"` method should be used when modifying the data and layout sections of the graph. +This example demonstrates how to update the data displayed while simultaneously updating layout attributes such as the annotations. ```python import plotly.graph_objects as go @@ -100,6 +100,72 @@ import numpy as np # Create figure fig = go.Figure() +min_val = 0 +max_val = 0 + +# Add traces, one for each slider step +start = -1 +for step in np.arange(start, 5, 0.1): + x_vec=np.arange(0, 10, 0.01) #np.arange(start, 1, 0.1) + y_vec=np.cos(step * np.arange(0, 10, 0.01)) + fig.add_trace( + go.Scatter( + visible=False, + line=dict(color="#00CED1", width=4), + name="𝜈 = " + str(step), + x=x_vec, + y=y_vec)) + if step == start: + min_val = np.min(y_vec) + max_val = np.max(y_vec) + else: + tmp_min = np.min(y_vec) + tmp_max = np.max(y_vec) + min_val = min(min_val, tmp_min) + max_val = max(max_val, tmp_max) + +# Make 10th trace visible +fig.data[10].visible = True + +# Add Annotations +annotation_info = [dict(x=1, + y=0, + xref="paper", yref="paper", + text="Min value:
%.4f" % min_val, + ax=0, ay=40, + showarrow=False, + xanchor="left", yanchor="bottom"), + dict(x=1, + y=1, + xref="paper", yref="paper", + text="Max value:
%.4f" % max_val, + ax=0, ay=-40, + showarrow=False, + xanchor="left", yanchor="top") + ] +# Create and add slider +steps = [] +for i in range(len(fig.data)): + step = dict( + method="update", + label=str(i), + args=[{"visible": [False] * len(fig.data)}, + {"title": "Slider switched to step: " + str(i), # layout attribute + "annotations": annotation_info}], # layout attribute + ) + step["args"][0]["visible"][i] = True # Toggle i'th trace to "visible" + steps.append(step) + +sliders = [dict( + active=10, + currentvalue={"prefix": "Slider value: "}, + pad={"t": 30}, + steps=steps +)] + +fig.update_layout( + sliders=sliders +) fig.show() ``` From 775ca68b2418d2f68137d478b5f640be9b96de7f Mon Sep 17 00:00:00 2001 From: akaalena Date: Mon, 1 May 2023 14:50:24 +0200 Subject: [PATCH 4/6] relayout method --- doc/python/sliders.md | 95 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/doc/python/sliders.md b/doc/python/sliders.md index e7223aa390..14b739cc28 100644 --- a/doc/python/sliders.md +++ b/doc/python/sliders.md @@ -170,6 +170,101 @@ fig.update_layout( fig.show() ``` +#### Relayout Method +The `"relayout"` method should be used when modifying layout attributes. + +```python +import plotly.graph_objects as go +import numpy as np + +# Create figure +fig = go.Figure() + +x0 = np.random.normal(2, 0.2, 400) +y0 = np.random.normal(2, 0.3, 400) +x1 = np.random.normal(3, 0.1, 600) +y1 = np.random.normal(6, 0.3, 400) +x2 = np.random.normal(4, 0.4, 200) +y2 = np.random.normal(4, 0.5, 200) + +# Add traces +fig.add_trace( + go.Scatter( + x=x0, + y=y0, + mode="markers", + marker=dict(color="DarkOrange") + ) +) + +fig.add_trace( + go.Scatter( + x=x1, + y=y1, + mode="markers", + marker=dict(color="Crimson") + ) +) + +fig.add_trace( + go.Scatter( + x=x2, + y=y2, + mode="markers", + marker=dict(color="RebeccaPurple") + ) +) + +fig.add_shape(type="circle", + xref="x", yref="y", + x0=min(x0), y0=min(y0), + x1=max(x2), y1=max(y1), + line_color="RebeccaPurple",) + +initial_cluster = [dict(type="circle", + xref="x", yref="y", + x0=min(x0), y0=min(y0), + x1=max(x0), y1=max(y0), + line=dict(color="DarkOrange"))] +cluster2 = [dict(type="circle", + xref="x", yref="y", + x0=min(x0), y0=min(y0), + x1=max(x1), y1=max(y1), + line=dict(color="Crimson"))] +cluster3 = [dict(type="circle", + xref="x", yref="y", + x0=min(x0), y0=min(y0), + x1=max(x2), y1=max(y1), + line=dict(color="RebeccaPurple"))] + +clusters = [initial_cluster, cluster2, cluster3] + +# Create and add slider +steps = [] +for i in range(len(fig.data)): + step = dict( + method="relayout", + label=str(i+1), + args=["shapes", clusters[i]], + ) + steps.append(step) + +sliders = [dict( + active=3, + currentvalue={"prefix": "Groups in cluster: "}, + pad={"t": 50}, + steps=steps +)] + +fig.update_layout( + title_text="Groups", + showlegend=False, + sliders=sliders +) + +fig.show() +``` + ### Sliders in Plotly Express Plotly Express provide sliders, but with implicit animation using the `"animate"` method described above. The animation play button can be omitted by removing `updatemenus` in the `layout`: From a2ca114bcb626d550289d5301075b4713dc22ecb Mon Sep 17 00:00:00 2001 From: akaalena Date: Mon, 1 May 2023 17:12:32 +0200 Subject: [PATCH 5/6] update --- doc/python/sliders.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/python/sliders.md b/doc/python/sliders.md index 14b739cc28..fc58d1d0e7 100644 --- a/doc/python/sliders.md +++ b/doc/python/sliders.md @@ -5,10 +5,10 @@ jupyter: text_representation: extension: .md format_name: markdown - format_version: '1.3' - jupytext_version: 1.14.5 + format_version: '1.1' + jupytext_version: 1.1.7 kernelspec: - display_name: Python 3 (ipykernel) + display_name: Python 3 language: python name: python3 language_info: @@ -20,7 +20,7 @@ jupyter: name: python nbconvert_exporter: python pygments_lexer: ipython3 - version: 3.8.16 + version: 3.7.2 plotly: description: How to add slider controls to your plots in Python with Plotly. display_as: controls From 8a47843b0fd0c70db7aa44aab9b318d198d5a2f6 Mon Sep 17 00:00:00 2001 From: akaalena Date: Mon, 1 May 2023 17:38:04 +0200 Subject: [PATCH 6/6] version changes for v2.0.0 --- doc/python/sliders.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/python/sliders.md b/doc/python/sliders.md index fc58d1d0e7..5c74bee736 100644 --- a/doc/python/sliders.md +++ b/doc/python/sliders.md @@ -172,6 +172,7 @@ fig.show() #### Relayout Method The `"relayout"` method should be used when modifying layout attributes. +This example demonstrates how to update which groups are in clusters. ```python import plotly.graph_objects as go