
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. 数据准备 |
|
2. 河流生成 |
|
3. 视觉优化 |
|
baseline='sym' 自动按比例分配空间matplotlib(Python 标准数据科学生态)合集 | 文章 |
|---|---|