当前位置:首页>python>Python编程小技巧--河流图

Python编程小技巧--河流图

  • 2026-10-10 15:35:02
Python编程小技巧--河流图
河流图(Streamgraph)是一种强调流动感与演变过程的可视化形式,核心价值在于:用美学化的"河流"形态直观呈现多类别数据的相对占比变化。比如

1️⃣ 文化/媒体趋势演变(最经典应用)

2️⃣ 话题/舆情热度追踪

3️⃣ 产品/品类市场份额演变

4️⃣ 生物/生态种群变化

等等。示例图如下,展示了音乐风格随时间增长的相对流行趋势
用Python绘制河流图也不复杂,代码如下,可直接运行
自定义建议
  • 修改第7行代码,调整相对趋势变化
  • 将第17行换成相应的话题,注意数量需要和第7行数组的行数一致
import matplotlib.pyplot as pltimport numpy as np# 1. 模拟数据:4个话题在12个月的热度(非负数值)months = np.arange(12)topics = np.array([    [5, 8, 12, 15, 18, 20, 19, 17, 14, 10, 7, 4],   # topic-1    [3, 4, 6, 9, 12, 15, 18, 20, 19, 16, 12, 8],    # topic-2    [2, 3, 4, 5, 7, 9, 11, 13, 15, 17, 18, 16],     # topic-3    [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 15, 18]        # topic-4])# 2. 绘制河流图(关键:baseline='sym' 创建对称流动效果)plt.figure(figsize=(10, 5), dpi=120)plt.stackplot(months, topics,              labels=['Pop', 'Hip-Hop', 'Rock', 'Electronic'],              colors=['#4A6FA5', '#E68A8A', '#8ABF9F', '#A890C9'],              baseline='sym',          # ← 核心参数:对称基线形成河流              alpha=0.95)              # 半透明增强层次感# 3. 美化plt.legend(loc='upper left', frameon=False, fontsize=11, ncol=4)plt.title('Popularity Flow', fontsize=18, loc='left', pad=15, color='#333')plt.xlabel('Month', fontsize=11, color='#666')plt.gca().set_facecolor('#F9F9F9')     # 暖灰背景plt.grid(axis='y', alpha=0.2, linestyle='--')plt.tight_layout()plt.show()
上述代码的核心原理如下

步骤

代码片段和作用

1. 数据准备

topics = np.array([...])

每行=1个类别,每列=1个时间点(必须非负)

2. 河流生成

baseline='sym'

将数据围绕中心线对称堆叠,形成自然流动感

3. 视觉优化

alpha=0.95 + 柔和配色

半透明叠加模拟水流交融,避免色块生硬

  • 无需插值:Matplotlib 自动处理曲线平滑
  • 无需归一化:baseline='sym' 自动按比例分配空间
  • 依赖简单:仅需 matplotlib(Python 标准数据科学生态)
  • 河流宽度:话题相对热度(越宽占比越高)
  • 河流位置:自动优化避免交叉
  • 色彩交融: alpha<1模拟水流透明感

过往文章/合集

合集

文章

Python编程小技巧

Python编程小技巧--用Python查询天气

Python编程小技巧--‌自制简易系统监控

Python--数据/图像可视化

Python编程小技巧--雷达图

Python编程小技巧--新年倒计时小工具2.0版

Python编程基础算法

Python编程基础算法--斐波那契数列的矩阵算法

Python编程基础算法--LeetCode编辑距离问题

细数那些经典教材

细数那些经典教材--算法与数据结构

细数那些经典教材--编程竞赛

Python库巡礼

Python库巡礼--Polars

Python库巡礼--SciPy

Python与数学之美

Python与数学之美--玫瑰线(Rhodonea Curve)

Python与数学之美--李萨如曲线(Lissajous)

最新文章

随机文章