让图表动起来:Plotly 交互绘图与数据导出
解决静态图表缺乏探索性的问题:通过 Plotly 库构建支持悬停提示、缩放平移的交互式图表,轻松生成可嵌入网页的可视化效果,或导出为高分辨率图片。
为什么需要这个技能
在处理复杂数据集(如金融时序、地理空间或科学模拟数据)时,静态图表(如 Matplotlib)往往只能展示单一维度的信息。
Plotly 允许用户在浏览图表时悬停查看具体数值、放大查看细节、切换图表类型,甚至直接通过链接在网页中嵌入动态看板。这对于构建自动化分析报表、探索性数据分析(EDA)或制作汇报演示至关重要。
适用场景
- 构建仪表盘:需要在网页或本地工具中展示实时更新的动态数据看板。
- 探索性分析:分析师需要快速检查数据分布、相关性,而无需反复运行脚本。
- 动态演示:需要在 PPT 或网页中嵌入带滚动条的时间序列或 3D 模型。
- 出版级输出:需要将交互式 HTML 报告导出为高清 PNG 或 PDF 用于论文发表。
核心工作流
-
环境准备与安装:
uv pip install plotly # 如需生成图片,需额外安装 kaleido uv pip install kaleido -
选择 API 接口:
- Plotly Express (px):适合快速生成标准图表(散点图、柱状图),代码简洁,默认配置合理。
- Graph Objects (go):适合需要精细控制图表组件(如 3D 网格、自定义标注)的高级场景。
-
生成与定制图表:
- 创建基础图形对象:
import plotly.express as px import pandas as pd df = pd.DataFrame({ 'x': [1, 2, 3, 4], 'y': [10, 11, 12, 13] }) fig = px.scatter(df, x='x', y='y', title='My First Plot') fig.show() - 自定义悬停信息与布局:
fig.update_traces(hovertemplate='<b>%{x}</b><br>Value: %{y:.2f}<extra></extra>') fig.update_layout(template='plotly_dark')
- 创建基础图形对象:
-
导出图表结果:
- 输出为交互式 HTML:
fig.write_html('chart.html') # 完整静态文件 fig.write_html('chart.html', include_plotlyjs='cdn') # 体积小,适合网页嵌入 - 输出为静态图片(需依赖 kaleido):
fig.write_image('chart.png') # PNG fig.write_image('chart.pdf') # PDF
- 输出为交互式 HTML:
下载和安装
你可能还需要
暂无推荐