本次讲解的数据来源就以我前面某一篇文章所爬取的数据为主
文章链接:使用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() 显示所绘制的图
所用数据
我们就根据温度的变化来绘制出不同的可视化图(包括折线图,条形图,饼图)
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方法保存图片
效果图:
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方法保存图片
效果图:
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方法保存图片
效果图: