[BUG]: Plotly doesn't render properly when used in the Colab VS Code extension.
@kevineger is already working on this.
Since Jan 21, 2026.
Assessment
This issue has not been assessed yet.
Description
Description
Hi there 👋, I'm the maintainer of the Colab VS Code extension which we recently launched:
One of our users reported https://github.com/googlecolab/colab-vscode/issues/339. Summarized, today Plotly doesn't render properly in VS Code when using the Colab extension. This requires users to manually configure the default renderer, instead of being able to lean on Plotly's detection.
Steps to reproduce
- Install the Colab VS Code extension
- Create a new Jupyter notebook file
- Click
Select Kernel - Select
Colab - If prompted (first run), sign in to Google
- Author a cell which renders a Plotly plot, e.g.:
import plotly.express as px import pandas as pd import plotly.io as pio data = {'x': [1, 2, 3, 4, 5], 'y': [1, 2, 4, 8, 16], 'text': ['hello', 'world', '!', '!', '!']} df = pd.DataFrame(data) fig = px.scatter(df, x="x", y="y", text="text", title="Hello World Plotly Express") fig.update_traces(textposition='top center') fig.show() - Execute the cell
Expected behaviour: plot is rendered as it does if you set pio.renderers.default = "vscode" before showing the plot.
Actual behaviour: nothing is rendered. You can Copy cell output and see the HTML output that's returned instead. This works in web-based Colab.
Notes
As you'll see in my reply, this seems to be caused by this block in Plotly, where the default_renderer gets set to colab. If I set plotly.io.renderers.default to 'plotly_mimetype' or 'vscode', everything works as intended.
Unfortunately, VS Code doesn't set VSCODE_PID for these remote Colab kernels, so we can't simply re-order the default renderer checks. One possible solution is to extend the Colab check from only looking for import google.colab to also check for COLAB_NOTEBOOK_ID, which I believe (need to double check) is only set for web-based Colab. Feels a bit brittle. Open to suggestions, and happy to send a PR once we reach consensus!
- Dominant language
- Python
- Stars
- 18.8k
- Forks
- 2.8k
- Avg merge
- 16h 26m
- Merged PRs (30d)
- 21
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from plotly/plotly.py
-
P3 size: 1 task
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
bug P1
Difficulty 1/5 Under an hour Newbie friendliness 68/100
-
feature P3
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
-
feature P3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
All issues in plotly/plotly.py
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
EleutherAI/lm-evaluation-harness#4207 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ClickHouse/clickhouse-connect#1057 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
open-telemetry/sig-end-user#406 ·
-
bug ci good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100