各位,如果你的 Python 环境里装着 plotly,这条消息值得花两分钟:8 月 25 日,plotly.py 7.0.0 正式登上 PyPI。GitHub习惯顺手 `pip install -U plotly` 的朋友,接下来装进环境的就是这个大版本。
先说结论:值得升,但不能盲升。底层的 plotly.js 从 3.6 一步跨到 4.0,一批旧接口被直接移除——这也是它敢叫 7.0 而不是 6.10 的原因。好消息是,这次所有移除项都提前一年半打过招呼,只要代码不算太老,大概率能平稳过渡。
五类代码会当场报错,对号入座
把 plotly.py 和 plotly.js 两个仓库的更新日志翻完、又在本地装了 7.0.0 逐项实测后,按"受伤程度"排序,一共五类:
第一类,手里有地图图的。mapbox 系这次被连根拔起:`scattermapbox`、`choroplethmapbox`、`densitymapbox` 三种 trace、`mapbox` 子图、`mapboxAccessToken` 配置,全部移除。GitHub其实不算突然——2025 年 1 月 6.0 发布时这批接口就被标记废弃,官方还给了 MapLibre 迁移指南,缓刑期一年半。迁移很机械:换成对应的 `*map` 系列(`scattermap`、`choroplethmap`、`densitymap`),底图换成 MapLibre,不再需要 Mapbox token。知乎还附赠一个改善:7.0 里地图默认自动缩放适配数据范围,不用再手动调 center 和 zoom。

第二类,用 plotly 导出图片的——历史上最惨的群体。7.0 移除了 kaleido 1.0 以下的旧版本支持和 orca 引擎,`engine` 参数也没了。升级前先 `pip show kaleido`:还停在 0.2.x 的,记得把 kaleido 一起升。目前最新是今年 5 月发布的 1.3.0,官方还为 kaleido 1.3.0 加上了默认请求头,导出时 OpenStreetMap 底图瓦片被拒的问题也一并避开。GitHub
第三类,代码是从老教程抄来的。figure_factory 的 12 个老函数集体移除:`create_gantt`、`create_candlestick`、`create_ohlc`、`create_distplot`、`create_annotated_heatmap` 等。GitHub网上流传的教程大量还在用 `figure_factory`,照着敲在 7.0 里会直接报错。替代方案都有现成的:甘特图换 `px.timeline`,K 线图换 `go.Candlestick`。

第四类,手写颜色字符串的。底层颜色解析库从 TinyColor 换成 culori,两种旧写法前端不再认:用 0–1 小数表示透明度的 `rgba(1.0, 0.5, 0, 0.3)`,以及 `hsv()`。GitHub最坑的是这类问题往往不报错——Python 这头照样跑,浏览器里颜色直接失效,排查起来很费时间。换来的新能力是支持 8 位十六进制(如 `#ff0000aa`)和 `oklch()`、`lab()`、`lch()` 等新格式。
第五类,在图里渲染数学公式的。MathJax 从 v2 升到 v4,图里有大量 LaTeX 公式的,升级后记得检查渲染结果。GitHub
不只是删东西,几个值得升的新功能
如果以为这版本只有"还债",也不公平:
quiver 向量场图来了,对应 `go.Quiver`(已实测存在)。画风场、流场、梯度箭头以前得用 annotation 一根根画箭头,现在是一种原生 trace,补缺口级别的更新。GitHub
工具栏多了"Share Chart"按钮,可以通过 Plotly Cloud 生成图表分享链接,"把交互图发给同事看"的场景少一步导出 HTML。
mpl_to_plotly 修复了一批静默丢失。以前把 matplotlib 图转成 plotly,小提琴图、pcolor、fill_between、stem 等会被悄悄丢掉,现在会转成填充多边形或线条保留下来。想给现成 matplotlib 图"补交互"的,这条路终于通了。
`to_html()` 导出的 HTML 带上 ``,更符合现代网页标准。

到底要不要升?按情况给四条建议
新项目或刚开始学:直接 7.0。教程里混着旧 API 很正常,遇到 `_mapbox` 一律换 `_map`。
日常分析、常导出图片:升,但 kaleido 一起升,装完先跑一张图验证。
地图图用户:先迁移到 `*map` 系列再升,两套 API 形态接近,成本不高。
生产环境跑 Dash 看板:Dash 目前最新是 7 月下旬的 4.4.1,发布时间早于 plotly 7.0,生产环境建议先在测试环境验证再动。
不想动的兜底方案:`pip install “plotly==6.9.0”`,7 月初发布的 6.x 最后一版,功能完全够用。
一句话总结:7.0 与其说是新功能大爆发,不如说是"还债版"——删的是 v6 就贴了告示的旧账,加的是 quiver 这种欠了很久的功能。这种版本恰恰最不能无脑升。
接下来值得盯的信号:社区教程和 Dash 生态多久能跟上 7.0,以及 kaleido 1.x 能不能终结 plotly 多年的"导出图片踩坑"顽疾。有新情况再来同步。