matplotlib折线图

208 阅读4分钟

折线图的好处有 1.能将数据进行可视化,更直观的呈现2.使数据更加客观、更具说服力 首先先介绍一下matpotlib是什么。matplotlib是最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 使用matplotlib创建简单的折线图的代码如下

image.png 此时我们得到的结果如下图

image.png 但是目前存在以下几个问题: 1.设置图片大(想要一个高清无码大图) 2.保存到本地 描述信息,比如x轴和y轴表示什么,这个图表示什么调整x或者y的刻度的间距 线条的样式(比如颜色,透明度等) 标记出特殊的点(比如告诉别人最高点和最低点在哪里)7.给图片添加一个水印(防伪,防止盗用)

设置图片的大小我们可以在传入x轴和y轴数据前使用

plt.figure(figsize=(20,15),dpi=200)

figsize括号内的第一个参数是宽,第二个参数是高,dpi设置的是清晰度

由于我们在创建折线图时,x轴都是我们自己想要的表达方式,而不是纯数字,所以在制作折线图时,我们也可以自己调整 x 轴的刻度

# 调整x轴的刻度
# _x=list(x)
# _xtick=["10点{}分".format(i) for i in range(60)]
# _xtick+=["11点{}分".format(i) for i in range(60) ]
# plt.xticks(_x[::3],_xtick[::3])

这是使用字符串去代表刻度,相当于一个字符串对应一个 x 的值,将 x 替换为想要的字符串,x 的长度要与字符串的长度相同,此时制作成的折线图如下

image.png 此时 x 轴太密集了,我们可以将这个 x 轴的显示旋转一下,只需要在设置坐标轴时加上 rotation=90,rotation 后面加旋转的度数,此时的图片为

image.png 此时图片中的中文不见了,只显示一个方框,所以我需要将中文显示出来,在 matplotlib 中中文默认不显示,想解决这个问题,我们可以在开头加入以下两行代码

import matplotlib
matplotlib.rc("font",family='FangSong')

也可以在设置 x 轴坐标刻度时在后面加上,fontproperties="STSong"

plt.xticks(_x[::3],_xtick[::3],rotation=90,fontproperties="STSong")

这两种方法都可以解决中文不显示的问题

此时 x 轴 y 轴和当前图形到底是什么没有明确表示一下,所以我们需要设置x轴和y轴的label

image.png

image.png 我们想要在图像中展现出上图中的表格时,我们可以在展示图片前加上 plt.grid(),即可产生表格样式,表格的竖线与 x 轴刻度对应,横线与 y 轴刻度对应,所以如果觉得表格的线太密集,我们可以通过调整 x 轴与 y 轴的刻度来改变,在 grid()中可以传入 alpha 的参数来控制表格的透明度

plt.grid(alpha=0.5) # 设置透明度

此时如果想在一个图表中展示多条数据,也就是多条折线,我们就需要多次绘图了,plt.plot(x,y)就是绘图一次

y_1=[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2=[1,2,0,5,6,4,1,2,6,4,5,2,1,0,0,1,1,1,2,1]
plt.figure(figsize=(20,15),dpi=100)
plt.plot(x,y_1)
plt.plot(x,y_2)

绘图就是将数据传入进去,然后就会呈现在图像中,因此我们只需要传入两次数据就行

image.png 此时虽然出现两条线,但是这两条线的指向不明确,别人来看这张图就不知道哪条线是自己的,哪条线是他人的,所以我们需要加上标注

plt.plot(x,y_1,label='自己',fontproperties="STSong")
plt.plot(x,y_2,label='同桌',fontproperties="STSong")

以上就是为每条折现添加注释,但是以上的描述是错误的,因为标注的中文显示不能直接写在后面,需要在展示图片之前加上一段添加图例的代码

image.png

# 添加图例
plt.legend(prop="STSong")

此时不能写 fontproperties,只能写 prop,记住在需要显示中文时,只有在添加图例中才使用 prop,使用其他的就会报错

image.png 这就是此时打印出的图片,如果想要更改标识的位置,可以在源代码库中查看具体的实现代码需要传入的参数

想要改变线条的风格我们可以在 plot 中传入相对应的参数

image.png 当然网格的线条风格也可以更改,就是在 grid()里面传入相对应的参数

image.png 以上是我们学到的各种方法

matpoltlib 不止可以画折线图,还可以画其他各种图,具体的可以在 matplotlib 官网上查找具体的图像的实现过程

image.png 我们可以根据我们所需要的特点来合理选择绘制哪种图像