时间趋势类可视化图像总结
时间序列数据分析是许多领域的核心任务,从金融到运维监控,选择合适的数据可视化图表能够直观展示趋势、波动和异常。本文将介绍地平线图、河流图、瀑布图、烛形图等经典时间趋势类图表的特性、应用场景,并提供基于Python的代码实现
一、地平线图(Horizon Chart)
特点:
• 通过分层和颜色深浅压缩垂直空间,支持多指标对比。
• 正负值用不同颜色区分,适合高密度时间序列展示。
应用场景:
• 服务器多维度监控(CPU、内存、流量)。
• 股票市场中多支股票的价格波动对比。
Python实现:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 设置中文字体(避免中文乱码)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用 SimHei 字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
# 生成数据
np.random.seed(42)
dates = pd.date_range('2023-01-01', periods=72)
values = np.random.randn(72).cumsum() + 50
# 分3层绘制地平线图
num_bands = 3
fig, axes = plt.subplots(num_bands, 1, figsize=(12, 4), sharex=True, gridspec_kw={'hspace': 0})
max_val, min_val = values.max(), values.min()
band_height = (max_val - min_val) / num_bands
for i, ax in enumerate(axes):
band_min = min_val + i * band_height
band_max = band_min + band_height
band_values = np.clip(values, band_min, band_max) - band_min
ax.fill_between(dates, band_values, 0, color=plt.cm.viridis(0.3 + 0.2*i), alpha=0.8)
ax.set_ylim(0, band_height)
ax.axis('off') # 隐藏坐标轴
plt.suptitle("地平线图 - 服务器负载趋势", y=0.9)
plt.show()
输出结果:

结果:图像垂直空间被压缩为3层,颜色由浅到深表示不同波段,适合同时监控多个指标。
二、河流图(Stream Graph)
特点:
• 堆积面积图的变种,基线对称,形似流动的河流。
• 通过颜色区分类别,强调占比变化和整体趋势。
应用场景:
• 展示不同产品市场份额随时间的变化。
• 用户行为分析中各操作路径的流量分布。
Python实现(Matplotlib):
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 设置中文字体(避免中文乱码)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用 SimHei 字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
plt.style.use('ggplot')
# 生成数据
dates = pd.date_range('2023-01-01', periods=30)
categories = ['A', 'B', 'C', 'D']
data = {cat: np.random.randn(30).cumsum() + 10*i for i, cat in enumerate(categories)}
df = pd.DataFrame(data, index=dates)
# 绘制河流图
fig, ax = plt.subplots(figsize=(12, 6))
colors = plt.cm.Pastel1(range(len(categories))) # 根据类别数量生成颜色
ax.stackplot(df.index, df.T.values, labels=categories, baseline='sym', colors=colors)
ax.legend(loc='upper left', fontsize=10)
ax.set_title("河流图 - 多类别趋势分析", fontsize=16)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
输出结果:

结果:曲线围绕中心线对称,不同颜色的区域如河流般流动,适合展示占比变化。
三、瀑布图(Waterfall Chart)
特点:
• 通过阶梯式柱子展示数据的增减过程,突出累积效应。
• 支持正向(绿色)和负向(红色)数值的对比。
应用场景:
• 财务报表中从收入到净利润的分解。
• 项目进度中任务完成度的阶段性展示。
Python实现:
import plotly.graph_objects as go
# 数据示例
categories = ['收入', '人力成本', '税费', '运营成本', '净利润']
values = [1200, -400, -150, -200, None] # None表示自动计算总计
measure = ['absolute', 'relative', 'relative', 'relative', 'total']
fig = go.Figure(go.Waterfall(
x=categories,
y=values,
measure=measure,
connector={"line": {"color": "gray"}},
increasing={"marker": {"color": "#2ca02c"}}, # 绿色表示增加
decreasing={"marker": {"color": "#d62728"}} # 红色表示减少
))
fig.update_layout(title="瀑布图 - 年度利润分析", showlegend=False)
fig.show()
输出结果:

结果:交互式图表展示从收入逐步扣除成本后的净利润,红色和绿色柱子区分支出与收入。
四、烛形图(Candlestick Chart)
特点:
• 每根“蜡烛”展示开盘价、收盘价、最高价、最低价。
• 实体颜色区分涨跌(绿色涨,红色跌)。
应用场景:
• 股票、加密货币等金融产品的价格波动分析。
• 外汇市场中汇率变化的日内趋势。
Python实现:
import plotly.graph_objects as go
import pandas as pd
import numpy as np
# 生成OHLC数据
dates = pd.date_range('2023-01-01', periods=30)
open = np.random.randn(30).cumsum() + 100
high = open + np.abs(np.random.randn(30))
low = open - np.abs(np.random.randn(30))
close = open + np.random.randn(30)
fig = go.Figure(go.Candlestick(
x=dates,
open=open,
high=high,
low=low,
close=close,
increasing_line_color='#2ca02c', # 绿色表示涨
decreasing_line_color='#d62728' # 红色表示跌
))
fig.update_layout(title="烛形图 - 股票价格趋势", xaxis_rangeslider_visible=False)
fig.show()
输出结果:

结果:交互式蜡烛图,鼠标悬停可查看详细价格数据,适合高频交易分析。
五、其他时间趋势图表
- 折线图:基础趋势对比,适用于少量时间序列。
- 面积图:强调趋势和总量,适合单一类别的累积变化。
- 热力图:展示时间与另一个维度的密度关系(如用户活跃时段)。
六、工具对比与选择
• Matplotlib:适合静态报告,高度定制化,但代码较复杂。
• Plotly:生成交互式图表,适合网页嵌入,代码简洁美观。
• Seaborn:基于Matplotlib的封装,快速绘制统计图表。
结语
不同的时间趋势图表各有优劣:
• 密集多指标:选择地平线图或河流图。
• 财务累积效应:瀑布图最佳。
• 金融价格波动:烛形图不可替代。
1790

被折叠的 条评论
为什么被折叠?



