Python绘制各类折线图的完整指南

 更新时间:2025年07月24日 09:03:21   作者:空脑小白  
折线图是数据可视化中最常用的图表类型之一,适用于展示数据随时间或有序类别变化的趋势,本文将详细介绍如何用 Python 的 Matplotlib、Seaborn 和 Plotly 库绘制各类折线图,从基础到进阶,覆盖常见场景及定制技巧,需要的朋友可以参考下

引言

折线图是数据可视化中最常用的图表类型之一,适用于展示数据随时间或有序类别变化的趋势。无论是分析销售额波动、温度变化,还是对比多组数据的趋势差异,折线图都能直观呈现数据的变化规律。本文将详细介绍如何用 Python 的 Matplotlib、Seaborn 和 Plotly 库绘制各类折线图,从基础到进阶,覆盖常见场景及定制技巧。

一、准备工作:环境与工具

在开始绘图前,需确保安装必要的库,并解决中文显示问题(避免标题 / 标签乱码)。

1. 安装依赖库

常用的折线图绘制库包括:

  • Matplotlib:Python 最基础的绘图库,功能全面,可高度定制;
  • Seaborn:基于 Matplotlib 的高级封装,风格更美观,适合统计可视化;
  • Plotly:交互式绘图库,支持动态交互(悬停、缩放等)。

 安装命令:

pip install matplotlib seaborn plotly pandas numpy

2. 全局设置(解决中文显示问题)

Matplotlib 默认不支持中文,需提前配置字体:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
 
# 设置中文显示
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]  # 支持中文
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题
sns.set(font_scale=1.2)  # Seaborn字体缩放

二、基础折线图:单条与多条数据

1. 单条折线图

适用于展示一组数据的变化趋势(如某产品月度销量)。

示例代码

# 生成数据:x为月份,y为销量
x = np.arange(1, 13)  # 1-12月
y = np.random.randint(50, 150, size=12)  # 随机生成50-150的销量
 
# 创建画布
plt.figure(figsize=(10, 6))  # 画布大小(宽, 高)
 
# 绘制折线图
plt.plot(x, y,  # x轴、y轴数据
         color='skyblue',  # 线条颜色
         marker='o',  # 数据点标记(圆形)
         linestyle='-',  # 线条样式(实线)
         linewidth=2,  # 线条宽度
         markersize=6)  # 标记大小
 
# 添加标题和标签
plt.title('2023年某产品月度销量趋势', fontsize=15)
plt.xlabel('月份', fontsize=12)
plt.ylabel('销量(件)', fontsize=12)
 
# 设置x轴刻度(1-12月)
plt.xticks(x)
 
# 添加网格线(辅助阅读)
plt.grid(alpha=0.3)  # alpha控制透明度
 
# 显示图表
plt.show()

关键技巧:通过label参数定义每条线的名称,用plt.legend()显示图例;用不同颜色、标记区分多条线,提升可读性。

三、进阶折线图:应对复杂场景

1. 带误差线的折线图

当数据存在波动范围(如实验重复的标准差)时,误差线可直观展示数据的可靠性。

示例代码

# 生成数据(模拟实验数据)
x = np.arange(1, 11)  # 实验次数
y = np.random.normal(50, 10, 10)  # 均值50,标准差10的随机数据
error = np.random.uniform(2, 5, 10)  # 误差范围(2-5)
 
plt.figure(figsize=(10, 6))
 
# 绘制带误差线的折线图
plt.errorbar(x, y, 
             yerr=error,  # y方向误差
             fmt='-o',  # 线条样式(-实线+o标记)
             ecolor='gray',  # 误差线颜色
             elinewidth=1,  # 误差线宽度
             capsize=3)  # 误差线末端横线长度
 
plt.title('实验数据趋势与误差范围', fontsize=15)
plt.xlabel('实验次数', fontsize=12)
plt.ylabel('测量值', fontsize=12)
plt.grid(alpha=0.3)
plt.show()

效果:折线中每个数据点都带有上下误差线,清晰展示数据的波动范围。

2. 时间序列折线图

时间序列数据(如每日气温、每周销售额)的 x 轴为日期,需特殊处理日期格式。

示例代码

import pandas as pd
 
# 生成时间序列数据(2023年1-3月,共90天)
dates = pd.date_range(start='2023-01-01', end='2023-03-31', freq='D')
values = np.random.randint(10, 30, size=len(dates))  # 模拟每日温度(10-30℃)
 
plt.figure(figsize=(14, 6))
 
# 绘制时间序列折线图
plt.plot(dates, values, color='orange', linewidth=1.5)
 
# 格式化x轴日期(避免重叠)
plt.gcf().autofmt_xdate()  # 自动旋转日期标签
plt.xlabel('日期', fontsize=12)
plt.ylabel('温度(℃)', fontsize=12)
plt.title('2023年1-3月每日温度趋势', fontsize=15)
plt.grid(alpha=0.3)
plt.show()

关键技巧:用pandas.date_range生成日期序列;通过plt.gcf().autofmt_xdate()自动旋转 x 轴日期标签,避免文字重叠。

3. 双 Y 轴折线图

当两组数据量级差异大(如 “销售额” 和 “订单量”)时,双 Y 轴可避免其中一组数据趋势被压缩。

示例代码

# 生成数据(量级差异大的两组数据)
x = np.arange(1, 13)  # 月份
y1 = np.random.randint(1000, 5000, 12)  # 销售额(千级)
y2 = np.random.randint(20, 80, 12)      # 订单量(十级)
 
# 创建画布和第一个Y轴
fig, ax1 = plt.subplots(figsize=(12, 6))
 
# 绘制第一组数据(销售额)
ax1.plot(x, y1, color='blue', label='销售额')
ax1.set_xlabel('月份', fontsize=12)
ax1.set_ylabel('销售额(元)', color='blue', fontsize=12)
ax1.tick_params(axis='y', labelcolor='blue')  # Y轴标签颜色
 
# 创建第二个Y轴(共享X轴)
ax2 = ax1.twinx()
ax2.plot(x, y2, color='red', label='订单量')
ax2.set_ylabel('订单量(单)', color='red', fontsize=12)
ax2.tick_params(axis='y', labelcolor='red')
 
# 合并图例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')
 
plt.title('月度销售额与订单量趋势', fontsize=15)
plt.grid(alpha=0.3)
plt.show()

效果:左侧 Y 轴展示销售额(千级),右侧 Y 轴展示订单量(十级),两组数据趋势均清晰可见。

4. 填充区域折线图

在折线下方填充颜色,可增强数据的视觉聚焦效果(如突出累积趋势)。

示例代码

# 生成数据(累积增长趋势)
x = np.arange(1, 11)
y = np.cumsum(np.random.randint(5, 15, 10))  # 累积求和(模拟用户增长)
 
plt.figure(figsize=(10, 6))
 
# 绘制折线并填充下方区域
plt.plot(x, y, color='purple', linewidth=2)
plt.fill_between(x, y,  # x范围、y上限(折线)、y下限(0)
                 color='purple', 
                 alpha=0.2)  # 透明度(0-1)
 
plt.title('产品用户累积增长趋势', fontsize=15)
plt.xlabel('上线月份', fontsize=12)
plt.ylabel('累积用户数', fontsize=12)
plt.grid(alpha=0.3)
plt.show()

效果:折线下方被半透明紫色填充,突出数据的累积增长趋势。

四、交互式折线图(Plotly)

静态折线图无法交互,而 Plotly 可生成支持悬停查看数据、缩放、平移的动态图表,适合网页展示。

示例代码

import plotly.express as px
 
# 生成数据(多组产品销量)
df = pd.DataFrame({
    '月份': np.arange(1, 13),
    '产品A': np.random.randint(50, 100, 12),
    '产品B': np.random.randint(80, 150, 12),
    '产品C': np.random.randint(30, 80, 12)
})
 
# 转换为长格式(适合Plotly)
df_long = df.melt('月份', var_name='产品', value_name='销量')
 
# 绘制交互式折线图
fig = px.line(df_long, 
              x='月份', 
              y='销量', 
              color='产品',  # 按产品区分线条
              title='2023年三大产品月度销量趋势(交互式)',
              markers=True)  # 显示数据点标记
 
# 显示图表(自动打开浏览器/IDE内置窗口)
fig.show()

交互功能

  • 悬停在数据点上可查看具体数值(月份、产品、销量);
  • 点击图例可隐藏 / 显示对应产品的折线;
  • 支持缩放(鼠标滚轮)、平移(拖拽)、下载图片。

五、总结

折线图是展示趋势的核心工具,Python 的 Matplotlib、Seaborn 和 Plotly 库可满足不同需求:

  • 基础静态图:用 Matplotlib,灵活定制样式;
  • 统计风格图:用 Seaborn,默认风格更美观;
  • 交互式图表:用 Plotly,适合动态探索数据。

实际应用中,需根据数据特点选择合适的折线图类型:对比多组数据用多条折线,展示波动用误差线,处理时间数据用时间序列图,量级差异大用双 Y 轴。通过合理定制样式(颜色、标记、标签),可让折线图更直观地传递数据信息。

以上就是Python绘制各类折线图的完整指南的详细内容,更多关于Python绘制各类折线图的资料请关注脚本之家其它相关文章!

相关文章

  • Django路由Path方法的实现

    Django路由Path方法的实现

    本文主要介绍了Django路由Path方法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • python网络爬虫精解之Beautiful Soup的使用说明

    python网络爬虫精解之Beautiful Soup的使用说明

    简单来说,Beautiful Soup 是 python 的一个库,最主要的功能是从网页抓取数据,Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能,需要的朋友可以参考下
    2021-09-09
  • 使用python进行图像分类的实现步骤

    使用python进行图像分类的实现步骤

    图像分类与识别是计算机视觉中的重要任务,它可以帮助我们自动识别图像中的对象、场景或者特征,在本文中,我们将介绍使用python进行图像分类的实现步骤,感兴趣的小伙伴跟着小编一起来看看吧
    2024-09-09
  • python多进程实现数据共享的示例代码

    python多进程实现数据共享的示例代码

    本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以了解一下
    2025-01-01
  • 使用 Python 和 OpenCV 实现摄像头人脸检测并截图功能

    使用 Python 和 OpenCV 实现摄像头人脸检测并截图功能

    在现代应用中,人脸检测是一项非常重要的技术,广泛应用于安全监控、身份验证等领域,本文详细介绍了如何使用 Python 和 OpenCV 库实现摄像头人脸检测并截图,并通过具体的代码示例展示了整个过程,感兴趣的朋友一起看看吧
    2024-11-11
  • Python实现多属性排序的方法

    Python实现多属性排序的方法

    这篇文章主要介绍了Python实现多属性排序的方法,非常不错,具有一定的参考价借鉴价值,需要的朋友可以参考下
    2018-12-12
  • 全网最细 Python 格式化输出用法讲解(推荐)

    全网最细 Python 格式化输出用法讲解(推荐)

    这篇文章主要介绍了全网最细 Python 格式化输出用法讲解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

    Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

    今天小编就为大家分享一篇Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python中sort()函数用法详解

    python中sort()函数用法详解

    Python和Java等编程语言一样,提供了一种自动排序的方法,Java中是Arrays.sort()方法,而Python中是sort()方法,下面这篇文章主要给大家介绍了关于python中sort()函数用法的相关资料,需要的朋友可以参考下
    2022-08-08
  • python ES连接服务器的方法详解

    python ES连接服务器的方法详解

    使用Python连接Elasticsearch服务器进行数据搜索和分析是一项常见操作,本文详细介绍了如何使用elasticsearch-py客户端库连接到Elasticsearch服务器,并执行创建索引、添加文档及搜索等基本操作
    2024-10-10

最新评论