系列文章目录

第一章 使用 matplotlib 绘制折线图
第二章 使用 matplotlib 绘制条形图
第三章 使用 matplotlib 绘制直方图
第四章 使用 matplotlib 绘制散点图
第五章 使用 matplotlib 绘制饼图
第六章 使用 matplotlib 绘制热力图
第七章 使用 matplotlib 绘制堆叠条形图
第八章 使用 matplotlib 在一个画布内绘制多个图


文章目录

  • 系列文章目录
  • 前言
  • 一、什么是折线图?
  • 二、折线图的绘制
    • 1.使用默认样式
    • 2.样式的设置
  • 三、应用场景
    • 1.适用场景
    • 2.不适用场景
  • 总结

前言

俗话说,一图胜千言。数据可视化便是将数据通过图形化的方式展现出来,它更加便于我们观察数据蕴含的的规律,洞察了数据蕴含的规律后,我们能够做更好的商业决策。


一、什么是折线图?

折线图是一个由点和线组成的统计图表,常用来表示数值随连续时间间隔或有序类别的变化。在折线图中,x 轴通常用作连续时间间隔或有序类别(比如阶段1,阶段2,阶段3)。y 轴用于量化的数据,如果为负值则绘制于 y 轴下方。连线用于连接两个相邻的数据点。

折线图用于分析事物随时间或有序类别而变化的趋势。如果有多组数据,则用于分析多组数据随时间变化或有序类别的相互作用和影响。折线的方向表示正/负变化。折线的斜率表示变化的程度。


二、折线图的绘制

1.使用默认样式

本节课我们来看如何作折线图。首先我们需要安装 matplotlib 库,可以使用命令 pip install matplotlib 进行安装。matplotlib 库安装完成后,我们便可以使用 matplotlib 库来作图了。例如:

from matplotlib import pyplot as pltdev_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]plt.plot(dev_x, dev_y)
plt.show()

上述代码的第一行从 matplotlib 导入 pyplot 并起别名 plt。dev_x、dev_y 为两个列表,分别包含 11 个数据,接下来调用 plot 函数便可以进行作图,plot 函数的参数为两组数据,调用 plot 函数之后,还需要调用 show 函数,否则不会显示图形。上述代码得到的图形如下所示:

上述图形中没有标识横坐标、纵坐标所表示的含义以及整个图形的标题。下面我们来添加上述信息:

from matplotlib import pyplot as pltdev_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]plt.plot(dev_x, dev_y)plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.show()

上述代码通过 xlabel 函数添加横坐标代表的含义,通过 ylabel 函数添加纵坐标代表的含义,通过 title 函数添加图形的标题。添加上述信息之后的图形如下图所示:

上面做的图中只包含一条折线,现在我们来添加另外一条曲线。代码如下:

from matplotlib import pyplot as pltdev_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(dev_x, dev_y)py_dev_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(py_dev_x, py_dev_y)plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.show()

绘制的图形如下:

上面的代码中,我们通过另外一组数据又添加了一条折线。仔细观察代码我们可以发现,dev_xpy_dev_x 是相同的,为了代码的简洁,我们可以只保留一份,例如:

from matplotlib import pyplot as pltages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y)py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y)plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.show()

执行完上述代码生成的图形如下图所示:

由于图形中有两条折线,每条折线代表的含义并没有在图形中标识出来,这样我们便不能对两条折线进行区分,为了对两条折线进行区分,我们需要为两条折线分别加上标签。例如:

from matplotlib import pyplot as pltages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y)py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y)plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.legend(['全部开发者','Python开发者'])plt.show()

绘制的图形如下:

上面代码中,我们通过 legend 函数为两条折线打上标签,legend 函数的参数为一个列表,列表中元素的顺序需和折线的绘制顺序保持一致,不然会导致错乱。当我们改变折线的绘制顺序时,要同步改变作为 legend 函数参数的列表中元素的顺序。这是上面方法的缺陷,下面我们来看另外一种方法。

from matplotlib import pyplot as pltages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y, label="全部开发者")py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y, label="Python开发者")plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.legend()plt.show()

上面的方法通过在 plot 函数中添加参数 label 来实现标签的添加,添加过参数 label 后,我们同样需要调用 legend 函数,否则标签不会显示出来,只不过此时调用 legend 函数不需要传入参数。为折线添加完标签之后的图形如下图所示:

2.样式的设置

上面图形的样式都是默认的,我们也可以通过参数来设置图形的样式,包括折线的颜色、形状以及粗细等等。例如:

from matplotlib import pyplot as pltages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y, label="全部开发者", color="blue", marker=".", linestyle="-")py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y, label="Python开发者", color="green", marker=".", linestyle="--")plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.legend()plt.show()

上面的代码中,我们通过 color 参数指定图形的颜色,marker 参数指定每个数据点的标记,linestyle 参数指定图形的形状。执行完上述代码后的图形如下图所示:

color 参数的值也可以是一个 Hex 值,Hex 值由六位十六进制数组成,前两位十六进制数代表红色的强度,中间两位十六进制数绿色的强度,最后两位十六进制数代表蓝色的强度。例如:

from matplotlib import pyplot as pltages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y, label="全部开发者", color="#FF0000", marker=".", linestyle="-")py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y, label="Python开发者", color="#00FF00", marker=".", linestyle="--")plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.legend()plt.show()

上面的代码中,通过 Hex 值 #FF0000 指定颜色为红色,通过 Hex 值 #00FF00 指定颜色为绿色。执行完上述代码后的图形如下图所示:

我们还可以为图形加上网格线,例如:

from matplotlib import pyplot as pltages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y, label="全部开发者", color="#FF0000", marker=".", linestyle="-")py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y, label="Python开发者", color="#00FF00", marker=".", linestyle="--")plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.legend()plt.grid(True)plt.show()

上面代码中,调用 grid 函数并传入 True 参数,执行完上述代码后的图形如下图所示:

为了使得图形中的空白区域更少些,我们调用 tight_layout 函数对空白区域进行自动填充,例如:

from matplotlib import pyplot as pltages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y, label="全部开发者", color="#FF0000", marker=".", linestyle="-")py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y, label="Python开发者", color="#00FF00", marker=".", linestyle="--")plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.legend()plt.grid(True)plt.tight_layout()plt.show()

添加 tight_layout 函数的调用后,生成的图形如下图所示:

上面我们是通过设置参数的方式来改变图形的样式,pyplot 也自带了一些样式供我们直接使用,例如:

from matplotlib import pyplot as pltplt.style.use('fivethirtyeight')ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y, label="全部开发者")py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y, label="Python开发者")plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.legend()plt.grid(True)plt.tight_layout()plt.show()

上述代码使用了 fivethirtyeight 样式,生成的图形如下图所示:

还有其他的样式,例如 ggplot:

from matplotlib import pyplot as pltplt.style.use('ggplot')ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y, label="全部开发者")py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y, label="Python开发者")plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")plt.legend()plt.grid(True)plt.tight_layout()plt.show()

生成的图形如下图所示:


三、应用场景

1.适用场景

同一变量随时间或有序类别而变化的趋势,例如上面的例子中薪水随年龄的变化趋势。

2.不适用场景

  • x 轴节点过多。
  • 数据样本过多,导致折线堆积,难以聚焦到重点。
  • 变量数值大多数情况下为 0。

总结

本章我们介绍了折线图的绘制,其中包括图形样式的设置以及折线图的适用场景及不适用场景。

下一章 使用 matplotlib 绘制条形图

第一章 使用 matplotlib 绘制折线图相关推荐

  1. matplotlib绘制折线图的柱状图

    1. matplotlib绘制折线图 我们使用matplotlib绘图库绘制一个温度/湿度折线图 绘制折线图使用的是pylot库的plot函数,该函数参数如下 plot(x,y,color,marke ...

  2. python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...

  3. python matplotlib画折线图_python使用matplotlib绘制折线图教程

    matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序 ...

  4. python画曲线图例-python使用matplotlib绘制折线图教程

    matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并 ...

  5. 如何使用python画折线图-python使用matplotlib绘制折线图教程

    matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序 ...

  6. label mpchart 饼图_运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解...

    从导入数据开始 这里我们有一个现成的数据表包,现在我们所处环境是pycharm,安装环境是annaconda3环境,我们将通过这个数据表包来进行数据分析,运用matplotlib绘制折线图.散点图.饼 ...

  7. 使用matplotlib绘制折线图(绘制一天当中的气温变化)

    matplotlib绘制折线图 一.使用matplotlib绘制一天当中的气温变化 1.假设一天当中每隔两个小时(range(2,26,2))的气温分别是[15,13,14.5,17,20,25,26 ...

  8. 「解析」Matplotlib 绘制折线图

    相比于[优雅]matplotlib 常见图.[优雅]matplotlib 3D图 而言,折线图使用的频率会更高一些,在此整理下最近使用 Matplotlib 绘制折线图常用的一些配置,小伙伴们只需要修 ...

  9. Python dataframe绘制饼图_运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解...

    从导入数据开始 这里我们有一个现成的数据表包,现在我们所处环境是pycharm,安装环境是annaconda3环境,我们将通过这个数据表包来进行数据分析,运用matplotlib绘制折线图.散点图.饼 ...

最新文章

  1. rufus中gpt和mrb磁盘_UEFI/BIOS/MBR/GPT启动过程详解与常见系统启动问题
  2. 编程思想:面向对象和面向过程
  3. 入门系列之在Ubuntu 16.04使用Buildbot建立持续集成系统
  4. 国内开源社区软件 PHPWind 团队已解散
  5. python遥感影像分类代码_Python 实现遥感影像波段组合的示例代码
  6. django基础篇01-环境的搭建和项目的创建
  7. 全量、增量 数据抽取 同步
  8. 图解通信原理与案例分析-10:楼宇有线对讲电话机案例--模拟基带点对点通信详解
  9. 魏俊妮《非人力资源的人力资源管理技术提升》课程大纲
  10. Rstudio插入Excel数据
  11. 测试iphone硬件好坏的软件,iPhone手机如何检测硬件故障,硬件检测必备技能,建议了解一下...
  12. android如何设置自适应大小的背景图片,Android – 设置壁纸以适应手机屏幕尺寸...
  13. 2 为什么软件架构很重要
  14. 大数据告诉你,30年来有多少中国人移民美国
  15. Cocos Creator下JavaScript一步一步实现重力球游戏,附代码
  16. python 无限循环小数_有关无限循环小数的一处漏洞
  17. html制作满天星,怎样使用原生js做出满天星效果
  18. [附源码]Python计算机毕业设计道路桥梁工程知识文库系统Django(程序+LW)
  19. 牛人的PENTAX单反之路_我是亲民_新浪博客
  20. 中科大郑烇、杨坚《计算机网络》课程 第五章笔记

热门文章

  1. 2.PRT文件的解析
  2. spwm单片机4路输出C语言,基于PIC单片机的正弦波逆变器设计与实现
  3. shell脚本案例30个带详细解析
  4. 论文笔记:Blind Super-Resolution With Iterative Kernel Correction
  5. android平板灵敏度,和平精英iPad最稳灵敏度怎么设置
  6. 点评中国的5G试验频段
  7. 最好用的iOS iPhone加密相册app上线了,功能强大,完全免费
  8. 972信息检索 | 第五章 国外综合性信息检索系统
  9. CodeForces_29B
  10. 苹果手机免密支付怎么取消_小心你手机APP上的免密支付!有人3分钟被盗刷8000多元...