准备工作
下载matplotlib库
在日常我们可能很多学生听过Matlab,Matlab是一个数据分析的大佬软件,可以做各种各样的数学建模方面的工作。但是本次的课程我们使用Python语言作为数据分析的基础,所以我们需要使用Python中的matplotlib库来完成数据分析。如何下载呢?打开我们的系统Shell
,然后在Shell中输入下面的指令。
pip install matplotlib
有的同学会出现timeout的报错,这是因为matplotlib的内容存储在pypi的网站,我们国内下载的速度比较慢,python的pip又有一个计时器,超时就判定为下载失败。所以我们需要加一个国内源。这里我推荐使用中国科技大学的镜像源。那么下载的指令就是。
pip install matplotlib -i https://pypi.mirrors.ustc.edu.cn/simple/
在我们看到successful xxx xxx等字样之后代表下载成功。那么我们就可以开始使用Matplotlib了。
验证是否安装成功
那么在正式使用之前,我们还是需要先测试我们的库是否下载成功。那么如何才可以测试下载是否成功呢?那当然就是使用一次啦!
import matplotlib
写好这一行代码,直接运行,不报错,就说明下载完成了。有的同学可能会说为什么我运行后什么反应都没有呢???因为这一个代码没有任何的输出,没反应反而代表成功导入了。
Matplotlib
折线图
如何画出一个简单的折线图
首先我们思考一个问题!一个折线图是由什么组成的?线段?直线?点?没错,一个折线图就是很多个点,组成连线,连线组成了折线。虽然不是特别严谨,但是大体上是没问题的。那么我们要是想画一个折线,就要告诉Python这些点是什么,那么一个点就需要x坐标和y坐标表示。
那么Python中为我们提供的的画折线图的函数就是至少需要接收这些点x轴的坐标的列表和y坐标的列表。
那么我现在提供一些数据给同学!下面是贵阳市8月5日开始的天气情况。我们现在就来实现一下用折线图画出贵阳天气8.5-8.11的变化。
那么首先我们需要引入matplotlib库中的pyplot,代码如下
from matplotlib import pyplot as plt # plt就是一个简称、缩写的意思,同学不写as plt也可以
然后我们需要录入一下数据,当然我们先来写一下最低气温的趋势。
date = ['8.5', '8.6', '8.7', '8.8', '8.9', '8.10', '8.11']
low_tem = [21, 21, 21, 23, 23, 23, 21]
最后我们需要做的就是画线,并展示画板。
plt.plot(date, low_tem)
plt.show()
运行效果如下:
1.1.3 让麻瓜看懂你的折线图
我们如果现在拿着这个折线图给路边的随机一个麻瓜,我们会发现他好像看不懂这是什么,那我们到底问题出在哪里呢?那就是我们没有标注,标题!那我们应该怎么做呢?
首先!我们需要先写出我们图表的标题也就是Title!
plt.title("贵阳市2024/8/5——2024/8/11温度变化")
在我们plt.show()
之前把这个写好就可以。但是我们会发现一个问题,我们会发现我们的中文部分无法显示,如下图所示。
这是因为matplotlib的默认字体中无法显示中文,所以我们需要更改默认的字体。代码如下。
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来显示负号
把这个代码写在导入matplotlib之后即可。
然后我们还缺少一个图注,也就是蓝色的线代表了什么呢?那么我们只需要修改一行代码再加一行代码就可以了!
plt.plot(date, low_tem, label="最低气温")
plt.legend()
然后我们再来看我们的数据中还缺少什么呢?是不是发现x轴和y轴都没有写好标注?那我们怎么来写呢?
plt.xlabel("日期")
plt.ylabel("温度(℃)")
这样就可以了,这样就代表x轴是日期,y轴是温度了。
1.1.4 画两条线可以么
现在我们第一个最低气温画好了,那我们可以画第二个线么?当然可以了!再写一遍刚刚的就可以了。完整代码如下所示
from matplotlib import pyplot as plt # plt就是一个简称、缩写的意思,同学不写as plt也可以
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来显示负号
date = ['8.5', '8.6', '8.7', '8.8', '8.9', '8.10', '8.11']
low_tem = [21, 21, 21, 23, 23, 23, 21]
high_tem = [28, 29, 31, 31, 29, 26, 27]
plt.xlabel("日期")
plt.ylabel("温度(℃)")
plt.plot(date, low_tem, label="最低气温")
plt.plot(date, high_tem, label="最高气温")
plt.legend()
plt.title("贵阳市2024/8/5——2024/8/11温度变化")
plt.show()
1.1.5 画一些重要的点
现在我们的折线图基本OK了,但是我们会发现例如8月5日和8月7日这样的日期,都属于重要的点位,但是并没有突出显示,那么我们应该怎么操作呢?这里我们就需要使用一个新的函数叫scatter
。
plt.scatter(date, low_tem)
plt.scatter(date, high_tem)
这样就可以将两条数据的点标注出来啦!