【Python可视化系列】一文彻底教会你绘制美观的折线图(理论+源码)

一、前言

    折线图是一种常用的可视化图表,可以清晰地展示数据随时间或其他连续变量的变化趋势,通过连接数据点,可以观察到数据的上升、下降、波动等变化趋势,帮助人们更直观地理解数据的变化规律。

二、基本折线图

2.1简单折线图

import matplotlib.pyplot as plt

# 准备数据
x = [1, 2, 3, 4, 5]  # x轴数据
y = [2, 6, 1, 3, 10]  # y轴数据

# 设置字体
plt.rcParams['font.family']='Times New Roman, SimSun'
# 绘制折线图
plt.plot(x, y)

# 添加标题和坐标轴标签
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')

# 显示图形
plt.show()

结果如下图所示:

图片

2.2设置线条和点

plt.plot(x, y,color='red',linestyle='--',marker='*')
x:横坐标数据
y:纵坐标数据
color:折线的颜色
    character   color
    ==========  ========
    'b'         blue
    'g'         green
    'r'         red
    'c'         cyan
    'm'         magenta
    'y'         yellow
    'k'         black
    'w'         white
linestyle:折线的类型,默认为实线
    ``'-'``             实线样式
    ``'--'``            虚线样式
    ``'-.'``            点划线样式
    ``':'``             点虚线样式 
marker:数据点的标记样式,默认为空
  三角形    '^'
  五角星    '*'
  圆圈     'o'
  加号     '+'
缩写形式:plt.plot(x, y,'*:r')
注:引号内的不区分顺序,但是颜色需要用缩写


其他的一些参数:
参数 linewidth 用以控制线条宽度(默认值为0.5)
参数 alpha=0.5 用以控制线条透明度
参数 markersize 用以控制标记大小
参数 markeredgecolor 用以控制标记的轮廓颜色
参数 markerfacecolor 用以控制标记的填充颜色

图片

三、进阶

3.1添加图例、添加数字标签

import matplotlib.pyplot as plt

# 月份
x1 = ['2017-01', '2017-02', '2017-03', '2017-04', '2017-05', '2017-06', '2017-07', '2017-08',
      '2017-09', '2017-10', '2017-11', '2017-12']
# 体重
y1 = [86, 85, 84, 80, 75, 70, 70, 74, 78, 70, 74, 80]

# 设置画布大小
plt.figure(figsize=(10, 7))
# 设置字体
font1 = {'family': 'Times New Roman', 'weight': 'normal', 'size': 14}
plt.rc('font', **font1)
# 绘图
plt.plot(x1, y1, label='weight changes', linewidth=3, color='r', marker='o',
         markerfacecolor='blue', markersize=14)
# 标题
plt.title("my weight", fontproperties=font1)
# 横坐标描述
plt.xlabel('month', fontproperties=font1)
# 纵坐标描述
plt.ylabel('weight', fontproperties=font1)
# 设置数字标签
for a, b in zip(x1, y1):
    plt.text(a, b+0.5, b, ha='center', va='bottom', fontproperties=font1)
# 设置图例
plt.legend()
plt.show()

这段代码添加了画布大小设置、字体设置、数字标签设置以及图例设置,结果如下:

图片

3.2一图绘制多条折线

import matplotlib.pyplot as plt
import seaborn as sns

x = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
highest = [12, 15, 18, 14, 16, 14, 10]
lowest = [6, 4, 8, 12, 10, 9, 7]

plt.plot(x, highest, "rs--", label="最高气温")
plt.plot(x, lowest, "rd--", label="最低气温")
for a, b in zip(x, highest):
    plt.text(a, b+1, b, ha='center', va='bottom')
    # 数据显示的横坐标、显示的位置高度、显示的数据值的大小
for a, b in zip(x, lowest):
    plt.text(a, b-2, b, ha='center', va='bottom')

# 绘图风格设置,使用seaborn库的API来设置样式
sns.set_style('darkgrid')
# # 设置字体
font1 = {'family': 'SimSun', 'weight': 'normal', 'size': 14}
plt.rc('font', **font1)
plt.rcParams["axes.unicode_minus"] = False

# x轴刻度标签设置
plt.xticks(x, fontproperties=font1)
# y轴标签数值范围设置
plt.ylim(0, 25)
# 标题设置
plt.title("一周气温变化趋势", fontproperties=font1)
plt.xlabel("星期", fontproperties=font1)
plt.ylabel("气温", fontproperties=font1)
# 图例设置
plt.legend()
plt.show()

这段代码对绘图的风格、x轴刻度标签的字体、y轴刻度标签的范围进行了设置,结果如下:

图片

本人读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,对Python有一定认知和理解,会结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。

致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

1、关注“数据杂坛”公众号,即可在后台联系我获取相关数据集和源码。

2、关注“数据杂坛”公众号,点击“领资料”即可免费领取资料书籍。

3、需要论文指导或商务合作,点击“联系我”添加作者微信直接交流。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 19:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 19:54:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 19:54:03       82 阅读
  4. Python语言-面向对象

    2023-12-11 19:54:03       91 阅读

热门阅读

  1. 在装有 PostgreSQL 14 的 Red Hat8上安装 `pg_cron`

    2023-12-11 19:54:03       45 阅读
  2. 基于粒子群算法求解充电桩布局

    2023-12-11 19:54:03       62 阅读
  3. 如何编写编写干净的 PHP 代码

    2023-12-11 19:54:03       55 阅读
  4. 抖音视频评论区采集软件使用教程

    2023-12-11 19:54:03       136 阅读
  5. 智能家居IC

    2023-12-11 19:54:03       60 阅读
  6. 实验七 子网的划分

    2023-12-11 19:54:03       46 阅读
  7. CCSDS标准中使用的9/整数小波变换(Matlab实现)

    2023-12-11 19:54:03       53 阅读
  8. pixmap must be grayscale or rgb to write as png

    2023-12-11 19:54:03       61 阅读
  9. 【东枫科技 招聘】实习:无线通信工程

    2023-12-11 19:54:03       50 阅读
  10. mysql 批量修改优化方案

    2023-12-11 19:54:03       50 阅读
  11. Boost.SafeNumerics模块测试:constexpr转换编程

    2023-12-11 19:54:03       52 阅读