欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python实现数据可视化

程序员文章站 2022-05-02 14:02:51
...

本次讲解的数据来源就以我前面某一篇文章所爬取的数据为主
文章链接:使用scrapy框架爬取数据并存入excel表中
过程中涉及调用excel文件的xlrd模块,有疑问的可以参考我的另一篇文章
文章链接:python从Excel中读取数据

所用模块:matplotlib模块

调用模块:import matplotlib.pyplot as plt

常用语法:

plt.bar(x_tuple,y_tuple)		绘制条形图

plt.pie(tuple,labels=bq_tuple)		绘制饼图,labels是饼图中每块的标签

plt.plot(x_tuple,y_tuple)		绘制折线图

plt.figure()		保存图片方法,配合.savefig()方法使用

.savefig(fname='保存路径',dpi=分辨率)		保存图片方法,使用前必须先得到figure对象

plt.legend(['图例名称'])		添加图例

plt.title("标题")		添加标题

plt.show()		显示所绘制的图

所用数据
python实现数据可视化
我们就根据温度的变化来绘制出不同的可视化图(包括折线图,条形图,饼图)

条形图

import xlrd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']  # 视图可以显示中文
plt.rcParams['axes.unicode_minus']=False

def excel():
    x_list = []
    y_list = []
    info = xlrd.open_workbook('H:/sp/tianqiyubao/tianqiyubao/天气2.xlsx')  # 打开文件
    sheet = info.sheet_by_name('天气1')  # 根据表名获取表
    for a in range(sheet.nrows):  # 获取表格的总行数:sheet.nrows  获取总列数:sheet.ncols
        cells = sheet.row_values(a) # row是行,col是列
        high = int(cells[2])  # 每行中第三个单元格的数据
        date = str(cells[0])  # 每行中第一个单元格的数据
        x_list.append(high)
        y_list.append(date)
    fig =plt.figure()  #保存图片注意事项:第一步必须先得到figure对象,
                        #再使用plt进行绘图,然后保存图片
    plt.bar(y_list,x_list)  # 绘制条形图
    plt.legend(['最高温度'])  # 条形图也可以添加图例
    plt.title("最高温度变化图")  # 为条形图添加标题
    plt.show()
    fig.savefig(fname='./111.jpg',dpi=500)  # 保存图片 分辨率为500
excel()

需要注意的是,如果要保存图片,第一步必须先得到figure对象,再使用plt进行绘图,然后使用.savefig方法保存图片

效果图:
python实现数据可视化

折线图

import xlrd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']  # 视图可以显示中文
plt.rcParams['axes.unicode_minus']=False

def excel():
    x_list = []
    x1_list = []
    y_list = []
    info = xlrd.open_workbook('H:/sp/tianqiyubao/tianqiyubao/天气2.xlsx')
    sheet = info.sheet_by_name('天气1')  # 根据表名获取表
    for a in range(sheet.nrows):  # 获取表格的总行数:sheet.nrows  获取总列数:sheet.ncols
        cells = sheet.row_values(a) # row是行,col是列
        high = int(cells[2])
        low = int(cells[3].split("℃")[0])
        date = str(cells[0])
        x_list.append(high)
        x1_list.append(low)
        y_list.append(date)
    fig = plt.figure()
    plt.plot(y_list,x_list,y_list,x1_list)  # 绘制多个曲线
    plt.legend(['最高温','最低温'])  # 显示图例
    plt.title("温度变化图")
    plt.show()
    fig.savefig("./22.jpg",dpi=600)  # 保存路径,分辨率
excel()

需要注意的是
1. 要在一个表中绘制多个曲线,可以在plt.plot()方法中添加多个x,y的值,添加时必须以x,y为一组来添加,就是一个x必须对应一个y
2. 如果要保存图片,第一步必须先得到figure对象,再使用plt进行绘图,然后使用.savefig方法保存图片

效果图:
python实现数据可视化

饼图

import xlrd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']  # 视图可以显示中文
plt.rcParams['axes.unicode_minus']=False

def excel():
    value = {}
    x_list = []
    y_list = []
    pinl = []
    biaoq = []
    info = xlrd.open_workbook('H:/sp/tianqiyubao/tianqiyubao/天气2.xlsx')  # 打开excel文件
    sheet = info.sheet_by_name('天气1')  # 根据表名获取表
    for a in range(sheet.nrows):  # 获取表格的总行数:sheet.nrows  获取总列数:sheet.ncols
        cells = sheet.row_values(a) # row是行,col是列
        high = int(cells[2])
        date = str(cells[0])
        x_list.append(high)
        y_list.append(date)
    for b in x_list:  # 统计列表中元素出现的次数,以此来划分每块的大小
        value[b] = value.get(b, 0) + 1
    for c in value:
        biaoq.append(c)
        pinl.append(value[c])
    fig =plt.figure()  #保存图片注意事项:第一步必须先得到figure对象,
                        #再使用plt进行绘图,然后保存图片
    plt.pie(pinl,labels=biaoq,autopct='%.6f%%')  # 绘制饼图,前面的元组为绘图依据,labels显示各块标签,autopct显示每块所占比,保留小数点后六位
    plt.legend(['30℃','32℃','31℃','28℃','29℃'])  # 图例顺序为列表顺序
    plt.title("七天内温度占比图")  # 为饼图添加标题
    plt.show()
    fig.savefig(fname='./11.jpg',dpi=500)  # 保存图片 分辨率为500
excel()

需要注意的是,如果要保存图片,第一步必须先得到figure对象,再使用plt进行绘图,然后使用.savefig方法保存图片

效果图:
python实现数据可视化

相关标签: Python 笔记