mcpField
P
plotly

plotly

github.com/davila7数据与数据库33.0k1.0k 次安装1 天前更新
代码仓库

关于 plotly

面向 Python 的交互式数据可视化技能,介绍 Plotly 的高层和底层绘图 API。适用于需要定制图表、交互功能及多种格式导出的数据工作。

主要功能

  1. 0140 多种图表类型
  2. 02Plotly Express 快速绘图
  3. 03Graph Objects 精细控制
  4. 04子图与样式定制
  5. 05交互操作与动画
  6. 06导出 HTML 和静态图像

适用场景

  1. 01制作科学数据图表
  2. 02比较统计分布
  3. 03展示时间序列或金融数据
  4. 04构建多图表仪表板

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davila7/claude-code-templates --skill plotly

安装后在 Claude Code 中输入/plotly确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

reference/
chart-types.md
export-interactivity.md
graph-objects.md
layouts-styling.md
plotly-express.md

详细介绍

Plotly

用于创建交互式、出版级可视化的 Python 绘图库,支持 40 多种图表类型。

快速开始

安装 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 DataFrame
  • 创建常见图表类型(散点图、折线图、柱状图、直方图等)
  • 需要自动颜色编码和图例
  • 希望代码最少(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、surface、mesh、cone、volume

专用图表: 旭日图、矩形树图、桑基图、平行坐标图、仪表图

有关所有图表类型的详细示例和用法,见 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)])
统计分析
# Distribution comparison
fig = px.histogram(df, x='values', color='group', marginal='box', nbins=30)

# Box plot with all points
fig = px.box(df, x='category', y='value', points='all')

# Violin plot
fig = px.violin(df, x='group', y='measurement', box=True)
时间序列和金融
# Time series with rangeslider
fig = px.line(df, x='date', y='price')
fig.update_xaxes(rangeslider_visible=True)

# Candlestick chart
import plotly.graph_objects as go
fig = go.Figure(data=[go.Candlestick(
    x=df['date'],
    open=df['open'],
    high=df['high'],
    low=df['low'],
    close=df['close']
)])
多图仪表板
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(
    rows=2, cols=2,
    subplot_titles=('Scatter', 'Bar', 'Histogram', 'Box'),
    specs=[[{'type': 'scatter'}, {'type': 'bar'}],
           [{'type': 'histogram'}, {'type': 'box'}]]
)

fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=1, col=1)
fig.add_trace(go.Bar(x=['A', 'B'], y=[1, 2]), row=1, col=2)
fig.add_trace(go.Histogram(x=data), row=2, col=1)
fig.add_trace(go.Box(y=data), row=2, col=2)

fig.update_layout(height=800, showlegend=False)

与 Dash 集成

对于交互式 Web 应用,请使用 Dash(Plotly 的 Web 应用框架):

uv pip install dash
import dash
from dash import dcc, html
import plotly.express as px

app = dash.Dash(__name__)

fig = px.scatter(df, x='x', y='y')

app.layout = html.Div([
    html.H1('Dashboard'),
    dcc.Graph(figure=fig)
])

app.run_server(debug=True)

参考文件

其他资源

评论

支持 Markdown