一、开篇:两种基础图表的核心定位​

在 Python 数据可视化领域,折线图(Line Chart)和面积图(Area Chart)是时序数据、趋势分析的 “常客”。两者均以 “线条” 为基础载体,但因视觉呈现方式的差异,在信息传递效率、适用场景上有着显著区别 ——折线图聚焦 “趋势变化”,面积图强化 “占比与累积”,选择哪种图表,本质是对 “数据故事重点” 的取舍。​

为什么选择折线图和面积图?选择折线图和面积图进行比较,核心原因有三点:

  1. 两者场景高度同源,均聚焦时序 / 连续数据(如趋势、增长),是用户面对同类数据时最易纠结的 “二选一” 选项,对比具极强实操价值;
  2. 两者视觉差异微小却功能分化显著,仅 “是否填充面积” 这一细节,便导致前者侧重 “趋势变化、波动”,后者侧重 “总量、占比”,是 “形式服务于内容” 的典型案例;
  3. 两者滥用问题高频,明确其差异能解决 “多组数据用面积图遮挡”“占比分析用折线图低效” 等痛点,帮用户精准划分图表适用边界。

二、核心差异:从 5 个维度深度对比​

对比维度​

折线图(Line Chart)​

面积图(Area Chart)​

视觉核心​

以 “线条走势” 为核心,背景空白,突出变化轨迹​

以 “线条与坐标轴围成的面积” 为核心,填充色彩 / 渐变​

信息侧重​

强调数据点的 “变化趋势、波动幅度、拐点”​

强调数据的 “累积量、占比关系、总量贡献”​

视觉权重​

轻量化,无视觉压迫感,适合多组数据对比​

厚重感强,填充区域易吸引注意力,单组 / 少数组数据更清晰​

适用场景​

1. 多组时序数据趋势对比(如不同产品销量变化)2. 关注数据波动细节(如股票价格日内波动)3. 强调 “变化率” 而非 “绝对量”​

1. 单组数据累积趋势(如年度营收增长)2. 多组数据占比分析(如各渠道流量占比)3. 突出 “总量” 与 “部分” 关系(如用户增长构成)​

Python 实操要点​

用plt.plot(),需优化线条样式(颜色、粗细、标记点)区分多组数据​

用plt.fill_between()或seaborn.areaplot(),需注意透明度(alpha)避免遮挡,堆叠面积图需设置stacked=True​

1. 折线图核心代码(Matplotlib)

import matplotlib.pyplot as plt
import numpy as np

# 数据:1-12月的两组指标值
x = np.arange(1, 13)  # 月份
y1 = [12, 15, 13, 18, 20, 22, 25, 23, 26, 29, 30, 32]  # 指标A
y2 = [8, 10, 14, 16, 17, 19, 21, 24, 22, 25, 27, 28]   # 指标B

# 核心绘图代码
plt.figure(figsize=(10, 6))
# 绘制折线(关键:plt.plot)
plt.plot(x, y1, label="指标A", color="#2E86AB", linewidth=2, marker="o")
plt.plot(x, y2, label="指标B", color="#A23B72", linewidth=2, marker="s")

# 基础美化
plt.title("月度指标趋势(折线图)")
plt.xlabel("月份")
plt.ylabel("数值")
plt.legend()
plt.grid(alpha=0.3)
plt.show()

核心函数plt.plot(x, y)—— 通过线条连接数据点,聚焦趋势变化。

2. 面积图核心代码(Matplotlib)

import matplotlib.pyplot as plt
import numpy as np

# 同折线图数据(保证对比一致性)
x = np.arange(1, 13)
y1 = [12, 15, 13, 18, 20, 22, 25, 23, 26, 29, 30, 32]
y2 = [8, 10, 14, 16, 17, 19, 21, 24, 22, 25, 27, 28]

# 核心绘图代码
plt.figure(figsize=(10, 6))
# 绘制面积图(关键:plt.fill_between)
plt.fill_between(x, y1, label="指标A", color="#2E86AB", alpha=0.7, edgecolor="white")
plt.fill_between(x, y2, label="指标B", color="#A23B72", alpha=0.7, edgecolor="white")

# 叠加线条增强趋势(可选)
plt.plot(x, y1, color="#2E86AB", linewidth=1)
plt.plot(x, y2, color="#A23B72", linewidth=1)

# 基础美化
plt.title("月度指标趋势(面积图)")
plt.xlabel("月份")
plt.ylabel("数值")
plt.legend()
plt.grid(alpha=0.3)
plt.show()

核心函数plt.fill_between(x, y)—— 填充线条与 x 轴之间的区域,强化体量感。

3.核心差异总结

图表类型 核心函数 视觉重点 代码关键参数
折线图 plt.plot() 线条走势、趋势对比 linewidth(线粗)、marker(标记点)
面积图 plt.fill_between() 填充区域、体量 / 占比 alpha(透明度)、edgecolor(边缘色)

三、案例:Python 代码实现与效果对比

实例背景​

分析某电商平台 2024 年上半年(1-6 月)三大核心品类(家电、服饰、美妆)的销售额数据,需同时呈现 “各品类趋势变化” 和 “整体销售额构成”,以此对比折线图和面积图的表现差异。​

基础数据(单位:万元)​

月份

家电

服饰

美妆

总销售额

1 月

80

50

30

160

2 月

75

60

35

170

3 月

90

70

40

200

4 月

100

85

45

230

5 月

110

90

55

255

6 月

120

100

65

285

折线图实现(聚焦趋势对比)

import matplotlib.pyplot as plt
import numpy as np

# 数据准备
months = ["1月", "2月", "3月", "4月", "5月", "6月"]
home_appliance = [80, 75, 90, 100, 110, 120]
clothing = [50, 60, 70, 85, 90, 100]
cosmetics = [30, 35, 40, 45, 55, 65]

# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(months, home_appliance, label="家电", linewidth=2.5, marker="o", markersize=8, color="#FF6B6B")
plt.plot(months, clothing, label="服饰", linewidth=2.5, marker="s", markersize=8, color="#4ECDC4")
plt.plot(months, cosmetics, label="美妆", linewidth=2.5, marker="^", markersize=8, color="#45B7D1")

# 美化与标注
plt.title("2024年1-6月各品类销售额趋势对比(折线图)", fontsize=14, fontweight="bold")
plt.xlabel("月份", fontsize=12)
plt.ylabel("销售额(万元)", fontsize=12)
plt.legend(loc="upper left", fontsize=11)
plt.grid(axis="y", alpha=0.3)
# 标注家电品类2月拐点
plt.annotate("春节促销下滑", xy=("2月", 75), xytext=("2月", 60), 
             arrowprops=dict(arrowstyle="->", color="red", alpha=0.7),
             color="red", fontsize=10)

plt.tight_layout()
plt.show()

  折线图特点体现​

  1. 趋势聚焦:三条独立线条清晰展示各品类的变化轨迹 —— 家电虽 2 月小幅下滑,但整体增长最快;服饰稳步上升;美妆增速平缓,趋势差异一目了然。​
  2. 细节敏感:能快速捕捉拐点(如家电 2 月下滑)和增速差异(6 月家电增长 20 万元,服饰增长 10 万元),适合分析 “变化规律”。​
  3. 多组对比高效:三组数据通过颜色、标记区分,无遮挡,读者可同时对比三个品类的相对位置和波动。​
  4. 轻量化传递:无填充区域干扰,视觉重心完全在 “线条走势”,适合快速抓取核心趋势。

面积图实现(聚焦总量与占比)

import matplotlib.pyplot as plt
import numpy as np

# 数据准备(同折线图)
months = ["1月", "2月", "3月", "4月", "5月", "6月"]
home_appliance = [80, 75, 90, 100, 110, 120]
clothing = [50, 60, 70, 85, 90, 100]
cosmetics = [30, 35, 40, 45, 55, 65]

# 绘制堆叠面积图
plt.figure(figsize=(10, 6))
plt.fill_between(months, 0, home_appliance, label="家电", color="#FF6B6B", alpha=0.7, edgecolor="white", linewidth=1)
plt.fill_between(months, home_appliance, np.array(home_appliance)+np.array(clothing), 
                 label="服饰", color="#4ECDC4", alpha=0.7, edgecolor="white", linewidth=1)
plt.fill_between(months, np.array(home_appliance)+np.array(clothing), 
                 np.array(home_appliance)+np.array(clothing)+np.array(cosmetics),
                 label="美妆", color="#45B7D1", alpha=0.7, edgecolor="white", linewidth=1)

# 叠加总销售额折线(增强总量感知)
total = np.array(home_appliance) + np.array(clothing) + np.array(cosmetics)
plt.plot(months, total, label="总销售额", color="#2C3E50", linewidth=3, linestyle="--", marker="D", markersize=6)

# 美化与标注
plt.title("2024年1-6月各品类销售额占比与总量(面积图)", fontsize=14, fontweight="bold")
plt.xlabel("月份", fontsize=12)
plt.ylabel("销售额(万元)", fontsize=12)
plt.legend(loc="upper left", fontsize=11)
plt.grid(axis="y", alpha=0.3)
# 标注6月总销售额
plt.text("6月", total[-1]+5, f"总销售额:{total[-1]}万元", ha="center", fontsize=10, fontweight="bold")

plt.tight_layout()
plt.show()

面积图特点体现​

  1. 总量直观:堆叠的填充区域清晰展示每月总销售额的体量变化,6 月 285 万元的规模感远强于折线图。​
  2. 占比明确:各颜色区域的高度直接反映品类占比 —— 家电始终占比最大(约 40%-45%),美妆占比最小(约 15%-20%),无需额外计算。​
  3. 视觉冲击强:填充区域的厚重感突出 “整体增长” 的核心信息,适合向决策者传递 “业务扩张节奏”。​
  4. 部分 - 整体关联:总销售额折线与堆叠区域结合,既体现各品类贡献,又展示整体成果,信息密度更高核心特点对比总结​。
实例对比核心结论

     折线图适合 “内部运营分析”:比如监控品类增速、定位波动拐点、对比多组趋势,核心解决 “数据如何变化” 的问题。

     面积图适合 “外部成果汇报”:比如向管理层展示总量增长、品类结构占比,核心解决 “数据有多少、占多少” 的问题。

     两者互补:若需兼顾 “趋势 + 总量”,可在面积图中叠加折线(如实例中总销售额虚线),既保留占比与体量感,又不丢失核心趋势。

四.核心总结

     折线图与面积图作为时序 / 连续数据可视化的核心工具,核心差异源于 “是否填充线条与坐标轴的区域”,但这一细节直接决定了两者的信息传递逻辑与适用场景,以下是全面总结:

     折线图:以plt.plot()为核心,聚焦 “趋势变化与多组对比”,通过独立线条传递数据的波动、增速、拐点等动态信息,视觉风格轻量化。

     面积图:以plt.fill_between()为核心,聚焦 “总量体量与占比关系”,通过填充区域强化数据的累积感、部分与整体的关联,视觉风格更具厚重感。

适用场景划分

     优先选折线图:内部运营分析、多品类趋势对比、高频波动监测(如股票走势、月度销量增速)、需定位拐点 / 异常的场景。

     优先选面积图:成果汇报、总量展示(如年度营收累积)、2-3 组数据占比分析(如各渠道流量构成)、强调 “部分贡献整体” 的场景。

      两者并非 “优劣之分”,而是 “功能互补”:折线图是 “趋势的放大镜”,帮用户看清 “数据如何变化”;面积图是 “总量的聚光灯”,帮用户感知 “数据有多少、占比如何”。实际应用中,需根据数据故事的核心诉求选择 —— 想传递 “变化逻辑” 用折线图,想传递 “体量与结构” 用面积图,也可结合两者(如面积图叠加趋势线)兼顾信息密度与可读性。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐