功能比较简单,直接上代码,上面有注释。
# -*- coding:utf-8 -*-
import csv
import glob
import os
import xlwt
import xlrd
import re
import matplotlib.pyplot as plt
import numpy as np
from numpy import double
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
class task():
#初始化信息
def __init__(self):
# 文件路径
self.feil_pass = 'D:\\data analysis\\alpay\\alpay\\all_after_2020.4.xls'
# 表格名称
self.sheet_name = 'alpay'
self.picture_name = 'My pay data picture'
#读写文件信息(可达到任意文档变成一个列表)
def rw_feil(self):
'''
获取xlsx文件
:return: 将需要的内容转化为列表一并返回
'''
#打开xlsx文件
xlsx = xlrd.open_workbook(self.feil_pass)
#打开指定的表单
table = xlsx.sheet_by_name(self.sheet_name)
#获取行号
nrows = table.nrows
body = []
for i in range(nrows):
#print(table.row_values(i))
#将每一行的信息都添加到一个列表body中
body.extend(table.row_values(i))
print(body)
return body
#提取有用的信息并且返回(这一段多余的)
def get_information(self):
feil_data=self.rw_feil()
return feil_data
#利用有用的信息制作图表
def use_information_chart(self):
#获取数据部分
data = self.get_information()
x_label = data[0]
y_label = data[1]
#赋值给x
x = data[2::2]
t = data[3::2]
y = []
for i in range(len(t)):
#将字符串转化为数字类型
y.append(double(t[i]))
print(x)
print(y)
#画图部分
plt.figure(figsize=(24, 8)) # 创建绘图对象 尺寸为3:1
#设置y轴的刻度,(最小值,最大值,刻度)
plt.yticks(np.arange(0, 14000, 2000))
#设置x轴的字体旋转90°
plt.xticks(rotation=90)
try:
plt.plot(x, y, "b--", linewidth=1) # 在当前绘图对象绘图(X轴,Y轴,蓝色虚线,线宽度)
except:
print('Parameter error')
plt.xlabel(x_label) # X轴标签
plt.ylabel(y_label) # Y轴标签
plt.title(self.picture_name) # 图标题
plt.show() # 显示图
plt.savefig("D:\\python Crawl data\\test\\data_exercise\\line.jpg", dpi=1000) # 保存图
if __name__ == '__main__':
t =task()
#t.get_information()
t.use_information_chart()
结果图: