python实现数据可视化

本次讲解的数据来源就以我前面某一篇文章所爬取的数据为主
文章链接:使用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 xlrdimport matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']  # 视图可以显示中文plt.rcParams['axes.unicode_minus']=Falsedef 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.ncolscells = 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)  # 保存图片 分辨率为500excel()

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

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

折线图

import xlrdimport matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']  # 视图可以显示中文plt.rcParams['axes.unicode_minus']=Falsedef 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.ncolscells = 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 xlrdimport matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']  # 视图可以显示中文plt.rcParams['axes.unicode_minus']=Falsedef 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.ncolscells = 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) + 1for 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)  # 保存图片 分辨率为500excel()

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

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

上一篇:%matplotlib inline的含义


下一篇:Matplotlib 简单绘图