Python图形化数据入门实例-基于Matplotlib

写在前面

书接上回,通过爬虫程序爬取广州市交通信息网站上面的区域车速情况数据之后,意欲通过方法将数据图形化显示出来,于是学习使用matplotlib的一些简单功能。

  • 上篇博文:Python动态网页爬虫入门实例
  • 系统版本:Windows10 64
  • Python版本: 3.7
  • 调用库:matplotlib
    利用pip指令下载,调试好环境变量之后在命令行中输入'pip install matoplotlib'指令

作者学习尚浅,该项目更多为作者学习记录,如对初学者有所帮助倍感荣幸,如有大佬对内容做出批评指正不胜感激。本文代码均属原创,如有雷同纯属巧合,转载请注明出处。

声明:本文档仅用于学习与交流使用,严禁用于一切商业用途,由此产生的后果本人概不负责。

成果展示

在本部分将主要将学习与实践的成果进行展示,包括代码以及图形样例。

引入部分

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

类初始化

类初始化函数,新建一些参数,代码如下:

#初始化包括车速图像显示坐标列表等信息
def __init__(self):
    self.x = []
    self.y_zx = []
    self.y_yx = []
    self.y_lw = []
    self.y_th = []
    self.y_hz = []
    self.y_by = []
    self.y = [self.y_zx, self.y_yx, self.y_lw, self.y_th, self.y_hz, self.y_by]
    self.areas = ['中心', '越秀', '荔湾', '天河', '海珠', '白云']
    self.font = FontProperties(fname='C:\\Windows\\Fonts\\simhei.ttf') #显示中文字体

数据读取与解析

将之前爬取好的车速数据进行读取,并将数据解析之后得到我们需要的车速数字信息,具体代码如下:

#读取数据并进行解析
def dataSplit(self):
    with open('data.csv', 'r') as f:
        lines = f.readlines()
        if len(lines) > 7: #仅显示最近7天数据
            lines = lines[:8]
        for i in range(1, len(lines)): #不读取第一行,即区域名行
            self.x.append(lines[i].split('\n')[0].split(';\t')[0][-5:])
            for j in range(0, len(self.y)):
                self.y[j].append(lines[i].split('\n')[0].split('\t')[j + 1])
                for k in range(len(self.y[j])):
                    self.y[j][k] = self.y[j][k].split(';')[0] #逐步分离字符串,最终仅剩余数字部分

图形绘制

在matplotlib中需要首先创建一张图片,然后再在图片上添加各种内容,具体代码如下:

#画图函数
def graphicDraw(self):
    plt.figure(figsize=(4, 2.5))
    self.fig = [] #新建一个列表用于存放各条曲线
    for i in range(len(self.x)):
        for j in range(len(self.y[i])):
            self.y[i][j] = float(self.y[i][j]) #将字符串格式的数字转换为浮点数
        self.fig.append(plt.plot(self.x, self.y[i])[0]) #分别各个区的各条曲线添加

图形显示

在matplotlib中,绘图完成之后需要对图片进行一定操作,可以选择添加标签等,最终需要显示图片,具体代码如下:

#显示函数,也即主函数
def graphicShow(self):
    self.dataSplit()
    self.graphicDraw()
    plt.legend(self.fig, self.areas, prop=self.font, loc='upper right') #添加标签
    plt.show() #图像显示

图形化显示结果如下图所示:

图形化结果

写在后面

首先,非常感谢您能够坚持看到这里,本分享的主体部分,包括内容与代码还有结果都在上面了,下面是我在进行本次项目,甚至已经小到可能都算不上一个项目的本次实践的一些心路历程,包括实施的思路以及过程中遇到的问题与解决方法,希望能对刚入门且同样遇到一些问题的你有一些帮助。

1.中文字体

相信很多初学者在面对Matplotlib库的时候都会遇到无法显示中文字体的问题,在网上以及在各种论坛中都可以获取到相关的解决方法,这里再多做赘述:

  • 利用Matplotlib中的字体属性类font_manger中的FontProperties函数,并利用如下语句:
from matplotlib.font_manger import FontProperties
font = FontProperties(fname='C:\\Windows\\Fonts\\simhei.ttf')

其中fname属性的值为系统字体库中的字体文件,我这里采用的是微软雅黑,文件名为simhei.ttf

至此本篇分享就算是完成啦,希望作为本人学习路上记录的一些点滴,能够为后来之人提供一些捷径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值