目录:
Plotly 用于创建交互式且具有视觉吸引力的图表,具有强大的交互性和丰富的图表类型。
在部署与分享方面,Plotly 创建的图标可以导出为静态图像(PNG、PDF等)、独立的HTML文件,或上传至 Plotly Chart Studio 进行在线分享与协作。
安装依赖:
$ pip install plotly -i https://pypi.tuna.tsinghua.edu.cn/simple
Plotly 提供了两个主要模块:
import plotly.express as px
import pandas as pd
# 创建示例数据
df = pd.DataFrame({
"x": [1, 2, 3, 4],
"y": [10, 15, 13, 17],
"category": ["A", "B", "A", "B"]
})
# 创建带分组的折线图
fig_line = px.line(df, x="x", y="y", color="category", title="快速折线图示例")
fig_line.show()
# 创建散点图,点的大小代表 y 值
fig_scatter = px.scatter(df, x="x", y="y", color="category", size="y", title="快速散点图示例")
fig_scatter.show()
当需要更精细地控制图表外观时,可以使用 graph_objects 模块。
import plotly.graph_objects as go
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 创建图形对象并添加轨迹
fig = go.Figure()
fig.add_trace(go.Scatter(
x=x,
y=y,
mode='lines+markers', # 同时显示线和标记点
name='正弦波',
line=dict(color='firebrick', width=2, dash='dash'), # 自定义线条
marker=dict(size=6, symbol='square') # 自定义标记点
))
# 自定义布局(标题、坐标轴、主题等)
fig.update_layout(
title='自定义折线图',
xaxis_title='X轴',
yaxis_title='Y轴',
template='plotly_dark', # 使用暗色主题
hovermode='x unified' # 悬停模式
)
fig.show()
import plotly.graph_objects as go
import numpy as np
# 生成 3D 曲面数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))
# 创建 3D 曲面图
fig = go.Figure(data=[go.Surface(z=z, x=x, y=y, colorscale='Viridis')])
fig.update_layout(
title='3D曲面图示例',
scene=dict(
xaxis_title='X轴',
yaxis_title='Y轴',
zaxis_title='Z轴'
)
)
fig.show()
import plotly.express as px
# 使用内置数据集创建气泡地图
df = px.data.gapminder().query("year == 2007")
fig = px.scatter_geo(df,
locations='iso_alpha', # 国家ISO代码
size='pop', # 气泡大小代表人口
color='continent', # 颜色代表大洲
hover_name='country', # 悬停显示国家名
title='2007年世界人口分布气泡图')
fig.show()
# 创建旭日图(Sunburst Chart)展示层级数据
df_tips = px.data.tips()
fig_sunburst = px.sunburst(df_tips,
path=['sex', 'day', 'time'], # 定义层级路径
values='total_bill', # 值决定扇形大小
title='消费数据旭日图')
fig_sunburst.show()
# 保存为独立的 HTML 文件,保留所有交互功能
fig.write_html("my_interactive_chart.html")
# 保存为静态图片(需安装 kaleido 引擎)
fig.write_image("my_static_chart.png") # 支持 PNG
fig.write_image("my_static_chart.pdf") # 支持 PDF
↶ 返回首页 ↶