当前位置:首页 > Python > 正文

Python Plotly库使用教程 - 交互式数据可视化指南

Python Plotly库使用教程

创建专业、交互式的数据可视化图表

什么是Plotly?

Plotly是一个基于Python的开源数据可视化库,能够创建丰富、交互式的图表。它支持多种图表类型,包括折线图、散点图、柱状图、饼图、热力图、3D图表等。

主要特点:

  • 高度交互性(缩放、平移、悬停查看数据)
  • 支持多种输出格式(HTML、图片、Jupyter Notebook)
  • 专业美观的默认样式
  • 与Pandas无缝集成
  • 支持3D和地理空间可视化

安装Plotly

使用pip安装Plotly:

pip install plotly

安装完成后,在Python中导入:

import plotly.graph_objects as go
import plotly.express as px

基础图表示例

折线图

import plotly.graph_objects as go

# 创建数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y, mode='lines+markers', 
                         name='平方数', line=dict(color='royalblue', width=3)))

# 设置布局
fig.update_layout(title='平方数折线图',
                  xaxis_title='X轴',
                  yaxis_title='Y轴')

# 显示图表
fig.show()

柱状图

import plotly.express as px

# 创建数据
data = {
    "月份": ["1月", "2月", "3月", "4月", "5月"],
    "销售额": [120, 150, 180, 90, 200],
    "产品": ["A", "B", "A", "B", "A"]
}

# 创建柱状图
fig = px.bar(data, x='月份', y='销售额', 
             color='产品', barmode='group',
             title='月度销售额')

# 显示图表
fig.show()

散点图

import plotly.express as px
import numpy as np

# 生成随机数据
np.random.seed(42)
x = np.random.rand(100)
y = x * 2 + np.random.randn(100) * 0.3

# 创建散点图
fig = px.scatter(x=x, y=y, trendline='ols', 
                 title='散点图示例',
                 labels={'x': '自变量', 'y': '因变量'})

# 显示图表
fig.show()

饼图

import plotly.express as px

# 创建数据
data = {
    "类别": ["电子产品", "服装", "食品", "书籍", "其他"],
    "销售额": [350, 220, 180, 120, 130]
}

# 创建饼图
fig = px.pie(data, names='类别', values='销售额', 
             title='销售类别分布',
             hole=0.3)  # 创建环形图

# 显示图表
fig.show()

高级图表

3D散点图

import plotly.express as px
import numpy as np

# 生成3D数据
np.random.seed(42)
x = np.random.rand(100)
y = np.random.rand(100)
z = x * y + np.random.randn(100) * 0.1

# 创建3D散点图
fig = px.scatter_3d(x=x, y=y, z=z, 
                    title='3D散点图示例',
                    labels={'x': 'X', 'y': 'Y', 'z': 'Z'})

# 显示图表
fig.show()

热力图

import plotly.express as px
import numpy as np

# 创建数据
data = np.random.rand(10, 10)

# 创建热力图
fig = px.imshow(data, 
                labels=dict(x="X轴", y="Y轴", color="值"),
                x=[f'Col{i+1}' for i in range(10)],
                y=[f'Row{i+1}' for i in range(10)],
                title='随机数据热力图')

# 显示图表
fig.show()

图表定制与导出

自定义图表样式

import plotly.graph_objects as go

# 创建柱状图
fig = go.Figure(data=[
    go.Bar(name='产品A', x=['1月', '2月', '3月'], y=[20, 14, 25], marker_color='indigo'),
    go.Bar(name='产品B', x=['1月', '2月', '3月'], y=[12, 18, 29], marker_color='crimson')
])

# 自定义布局
fig.update_layout(
    title='产品月度销售对比',
    title_font_size=24,
    title_font_color='darkblue',
    xaxis_title='月份',
    yaxis_title='销售额 (万元)',
    font=dict(family='Arial', size=14, color='black'),
    barmode='group',
    plot_bgcolor='rgba(240,240,240,0.9)',
    paper_bgcolor='rgba(255,255,255,0.9)',
    legend=dict(orientation='h', yanchor='bottom', y=1.02, xanchor='right', x=1)
)

# 显示图表
fig.show()

导出图表

# 导出为HTML文件
fig.write_html("chart.html")

# 导出为图片(需要安装orca)
# fig.write_image("chart.png")

# 导出为PDF
# fig.write_image("chart.pdf")

# 在Jupyter Notebook中显示
# fig.show()

Plotly vs. Matplotlib

特性 Plotly Matplotlib
交互性 高(缩放、悬停、平移) 基本无(静态图表)
学习曲线 中等 较陡峭
图表美观度 高(默认专业) 需较多定制
3D图表 支持良好 支持有限
Web集成 原生支持 需额外转换

结语

Plotly是Python生态中功能强大且美观的数据可视化库,特别适合需要交互性的场景。通过本教程,您已经学会了:

  • 安装和导入Plotly库
  • 创建基础图表(折线图、柱状图、散点图、饼图)
  • 创建高级图表(3D图、热力图)
  • 自定义图表样式和布局
  • 导出图表到不同格式

Plotly在数据科学、商业分析和Web应用中都有广泛用途。通过不断实践,您可以掌握更多高级功能,创建出专业级的数据可视化作品。

学习资源

发表评论