
关于
交互式可视化库。当需要悬停信息、缩放、平移或可嵌入 Web 的图表时使用。最适合数据探索和仪表板。
name: plotly description: 交互式可视化库。当你需要悬停信息、缩放、平移或可嵌入网页的图表时使用。适合仪表盘、探索性分析和演示。静态出版图形请使用 matplotlib 或 scientific-visualization。 license: MIT 许可证 metadata: skill-author: K-Dense Inc. risk: unknown source: community
Plotly
用于创建交互式、出版级可视化图表的 Python 绑图库,支持 40+ 种图表类型。
适用场景
- 需要带有悬停、缩放、平移或网页嵌入功能的交互式图表。
- 正在构建仪表盘、探索性分析笔记本或需要丰富交互的演示文稿。
- 希望在 Plotly Express 和 Graph Objects 之间为同一可视化任务做出选择。
快速开始
安装 Plotly:
uv pip install plotly
使用 Plotly Express(高级 API)的基本用法:
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()
API 选择指南
使用 Plotly Express (px)
适用于快速、标准的可视化,具有合理的默认设置:
- 处理 pandas DataFrames 数据
- 创建常见图表类型(散点图、折线图、柱状图、直方图等)
- 需要自动颜色编码和图例
- 希望代码量最少(1-5 行)
完整指南参见 reference/plotly-express.md。
使用 Graph Objects (go)
适用于精细控制和自定义可视化:
- Plotly Express 中没有的图表类型(3D 网格、等值面、复杂金融图表)
- 从零构建复杂的多轨迹图形
- 需要对各个组件进行精确控制
- 创建带有自定义形状和注释的专业可视化
完整指南参见 reference/graph-objects.md。
注意: Plotly Express 返回 graph objects 的 Figure 对象,因此可以组合使用:
fig = px.scatter(df, x='x', y='y')
fig.update_layout(title='Custom Title') # Use go methods on px figure
fig.add_hline(y=10) # Add shapes
核心功能
1. 图表类型
Plotly 支持 40+ 种图表类型,按类别组织:
基础图表: 散点图、折线图、柱状图、饼图、面积图、气泡图
统计图表: 直方图、箱线图、小提琴图、分布图、误差线
科学图表: 热力图、等高线图、三元图、图像显示
金融图表: K线图、OHLC、瀑布图、漏斗图、时间序列
地图: 散点地图、分级统计图、密度地图(地理可视化)
3D 图表: scatter3d、曲面图、网格图、锥体图、体积图
特殊图表: 旭日图、树状图、桑基图、平行坐标图、仪表盘
所有图表类型的详细示例和用法参见 reference/chart-types.md。
2. 布局与样式
子图: 创建共享坐标轴的多图布局:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(rows=2, cols=2, subplot_titles=('A', 'B', 'C', 'D'))
fig.add_trace(go.Scatter(x=[1, 2], y=[3, 4]), row=1, col=1)
模板: 应用协调的样式:
fig = px.scatter(df, x='x', y='y', template='plotly_dark')
# Built-in: plotly_white, plotly_dark, ggplot2, seaborn, simple_white
自定义: 控制外观的每个方面:
- 颜色(离散序列、连续色阶)
- 字体和文本
- 坐标轴(范围、刻度、网格)
- 图例
- 边距和尺寸
- 注释和形状
完整布局和样式选项参见 reference/layouts-styling.md。
3. 交互功能
内置交互特性:
- 可自定义数据的悬停提示
- 平移和缩放
- 图例切换
- 框选/套索选择
- 时间序列范围滑块
- 按钮和下拉菜单
- 动画
# Custom hover template
fig.update_traces(
hovertemplate='<b>%{x}</b><br>Value: %{y:.2f}<extra></extra>'
)
# Add rangeslider
fig.update_xaxes(rangeslider_visible=True)
# Animations
fig = px.scatter(df, x='x', y='y', animation_frame='year')
完整交互指南参见 reference/export-interactivity.md。
4. 导出选项
交互式 HTML:
fig.write_html('chart.html') # Full standalone
fig.write_html('chart.html', include_plotlyjs='cdn') # Smaller file
静态图片(需要 kaleido):
uv pip install kaleido
fig.write_image('chart.png') # PNG
fig.write_image('chart.pdf') # PDF
fig.write_image('chart.svg') # SVG
完整导出选项参见 reference/export-interactivity.md。
常见工作流
科学数据可视化
import plotly.express as px
# Scatter plot with trendline
fig = px.scatter(df, x='temperature', y='yield', trendline='ols')
# Heatmap from matrix
fig = px.imshow(correlation_matrix, text_auto=True, color_continuous_scale='RdBu')
# 3D surface plot
import plotly.graph_objects as go
fig = go.Figure(data=[go.Surface(z=z_data, x=x_data, y=y_data)])
统计分析
# Box plot comparison
fig = px.box(df, x='category', y='value', color='group')
# Violin plot with data points
fig = px.violin(df, x='category', y='value', box=True, points='all')
仪表盘组件
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(
rows=2, cols=2,
specs=[[{'type': 'indicator'}, {'type': 'bar'}],
[{'type': 'scatter', 'colspan': 2}, None]]
)
