[knitr] Duplicated plotly graph - intermediary plot shoud probably be hidden
Opened this issue · 5 comments
From quarto-dev/quarto-cli#4507 - idea is to try the examples at https://plotly.com/python/sliders/
---
title: "plotly"
output: html_document
---
```{python}
#| echo: false
import plotly.graph_objects as go
import numpy as np
# Create figure
fig = go.Figure()
# Add traces, one for each slider step
for step in np.arange(0, 5, 0.1):
fig.add_trace(
go.Scatter(
visible=False,
line=dict(color="#00CED1", width=6),
name="𝜈 = " + str(step),
x=np.arange(0, 10, 0.01),
y=np.sin(step * np.arange(0, 10, 0.01))))
# Make 10th trace visible
fig.data[10].visible = True
# Create and add slider
steps = []
for i in range(len(fig.data)):
step = dict(
method="update",
args=[{"visible": [False] * len(fig.data)},
{"title": "Slider switched to step: " + str(i)}], # layout attribute
)
step["args"][0]["visible"][i] = True # Toggle i'th trace to "visible"
steps.append(step)
sliders = [dict(
active=10,
currentvalue={"prefix": "Frequency: "},
pad={"t": 50},
steps=steps
)]
fig.update_layout(
sliders=sliders
)
fig.show()
```
But rendering this in R Markdown documents (or quarto), will end up with more plot than expected.
Is this expected and it should somehow be dealt with in code chunk itself ? Or should there be a way to hide intermediary plots by default ?
Thanks, I can reproduce.
In principle I agree that we should suppress auto-printing of the intermediate figures here, but changing the auto-printing semantics here is going to be a breaking change which we'll have to do thoughtfully.
For now, users can explicitly disable printing of intermediate plots by enabling jupyter_compat=TRUE
mode. In this mode, only the very last expression in a chunk gets auto-printed, and only if it doesn't end with a trailing ;
.
E.g., updating the chunk like:
```{python}
#| jupyter_compat: true
#| echo: false
import plotly.graph_objects as go
import numpy as np
.... (same as before)
Thanks ! I did not know about this jupyter_compat
mode.
You may want to have a peek at ?reticulate::eng_python
. We recently updated the help page to comprehensively list all the knitr options we support.
Hello everyone! I'm creating a simple dashboard with Quarto in Python. When I insert a chart with plotly like the example below, the chart gets duplicated, probably due to fig.update_layout and fig.update_traces.
I’ve tried various solutions suggested here, but none of them fixed the issue. Has anyone else encountered this problem and maybe found a solution?
#| title: Mediana 2019
fig1 = px.bar(
df.sort_values(by='reddito_mediano_2019'),
x='comune',
y='reddito_mediano_2019',
labels={'comune': 'Comune', 'reddito_mediano_2019': 'Reddito mediano 2019'},
color_discrete_sequence=['#C00000']
)
fig1.update_layout(
xaxis_title='Comune',
yaxis_title='Reddito (€)',
xaxis=dict(showticklabels=False),
yaxis=dict(tickformat=",.0f"),
template='simple_white',
height=400,
width=1200
)
fig1.update_traces(
hovertemplate='<b>%{x}</b><br>' + 'Reddito mediano: €%{y:,.0f}'
)