Skip to content

Plotly 可视化

Plotly 是一个交互式可视化库,支持创建交互式图表和仪表板。

基本绘图

折线图

python
import plotly.express as px
import pandas as pd

# 创建数据
data = pd.DataFrame({
    'x': [1, 2, 3, 4, 5],
    'y': [2, 4, 5, 4, 5]
})

# 创建折线图
fig = px.line(data, x='x', y='y', title='折线图')
fig.show()

散点图

python
# 创建散点图
fig = px.scatter(data, x='x', y='y', title='散点图', 
                 size='y', color='x', hover_data=['x', 'y'])
fig.show()

柱状图

python
# 创建数据
data = pd.DataFrame({
    'category': ['A', 'B', 'C', 'D'],
    'value': [30, 45, 25, 60]
})

# 创建柱状图
fig = px.bar(data, x='category', y='value', title='柱状图', color='category')
fig.show()

直方图

python
# 创建数据
data = pd.DataFrame({
    'value': np.random.randn(1000)
})

# 创建直方图
fig = px.histogram(data, x='value', title='直方图', nbins=30)
fig.show()

高级绘图

箱线图

python
# 创建数据
data = pd.DataFrame({
    'group': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
    'value': [10, 20, 30, 20, 30, 40, 30, 40, 50]
})

# 创建箱线图
fig = px.box(data, x='group', y='value', title='箱线图')
fig.show()

热力图

python
# 创建数据
data = pd.DataFrame({
    'x': [1, 2, 3, 4, 5],
    'y': [2, 4, 5, 4, 5],
    'z': [3, 6, 7, 6, 7]
})
corr_matrix = data.corr()

# 创建热力图
fig = px.imshow(corr_matrix, title='热力图', 
                labels=dict(x='变量', y='变量', color='相关系数'),
                x=data.columns, y=data.columns)
fig.show()

3D 散点图

python
# 创建数据
data = pd.DataFrame({
    'x': np.random.rand(100),
    'y': np.random.rand(100),
    'z': np.random.rand(100)
})

# 创建 3D 散点图
fig = px.scatter_3d(data, x='x', y='y', z='z', title='3D 散点图',
                    color='z', size='z')
fig.show()

地理地图

python
# 创建地理数据
data = pd.DataFrame({
    'country': ['China', 'India', 'USA', 'Indonesia', 'Pakistan'],
    'population': [1439323776, 1380004385, 331002651, 273523615, 220892340]
})

# 创建地图
fig = px.choropleth(data, locations='country', locationmode='country names',
                    color='population', title='世界人口分布',
                    color_continuous_scale=px.colors.sequential.Plasma)
fig.show()

交互式功能

添加悬停提示

python
# 创建带悬停提示的散点图
fig = px.scatter(data, x='x', y='y', title='带悬停提示的散点图')
fig.update_traces(hoverinfo='all', hovertemplate='X: %{x}<br>Y: %{y}')
fig.show()

添加动画

python
# 创建带动画的散点图
data = pd.DataFrame({
    'x': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
    'y': [2, 4, 5, 4, 5, 3, 5, 6, 5, 6],
    'time': [1, 1, 1, 1, 1, 2, 2, 2, 2, 2]
})

fig = px.scatter(data, x='x', y='y', title='带动画的散点图',
                 animation_frame='time', color='time')
fig.show()

注意事项

  1. 交互式特性: Plotly 图表是交互式的,可以缩放、平移和悬停查看详情
  2. 输出格式: 可以导出为 HTML、PNG、PDF 等格式
  3. 性能考虑: 对于大型数据集,需要考虑图表性能
  4. 主题选择: 选择合适的主题和颜色方案