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()注意事项
- 交互式特性: Plotly 图表是交互式的,可以缩放、平移和悬停查看详情
- 输出格式: 可以导出为 HTML、PNG、PDF 等格式
- 性能考虑: 对于大型数据集,需要考虑图表性能
- 主题选择: 选择合适的主题和颜色方案