Python PyQt6设计图形界面,PyQt6与MatPlotlib实现简易绘图小程序绘制出来结果如图。
数据
选取的数据是时间序列,格式:
年-月-日后面跟着24个数据,算是小时值吧,缺数为NULL,数据处理时,要把空值去除。
绘图目标
本次绘图就是实现简单的数据求每天的平均,标准差,均方差,还可以统计最大,最小等。
数据处理
用pandas读入这个文件,一共25列,第一列为日期,通过datetime
标出时间类型,其后的24个数据,转成numpy,通过Numpy来进行简单的求平均等操作。这些计算部分完成,把计算结果存成pandas的dataframe
格式,命名df的列名,通过用列名,绘图时直接调用。
with open(filename1,"a") as f:
#f.write( "ds,y" + '\n')
with open (self.filename) as file_object:
lines = file_object.read().splitlines()#去除每行末尾的回车符
for line in lines:
ll = len(line.split())
dd = line.split()[0]
dd0 = dt.datetime.strptime(dd,'%Y-%m-%d')
#print(str(dd0)[:10])
data = line.split()[1:ll]
lll = len(data)
if lll>1:
num =[]
for n in data:
if n != 'NULL':
num.append(float(n))
if num != []:
data_m =np.mean(num)
data_var = np.var(num)
data_std = np.std(num)
data_sum = np.sum(num)
#for i in range(0,ll-1):
# nnn = dd0 + dt.timedelta(seconds = coefficient * i)
f.write(str(dd0)[:10]+","+ str(data_m) +","+ str(data_var) +","+ str(data_std)+ ","+ str(data_sum)+ '\n')
上现代码封闭成一个函数,调用结束返回一个dataframe
,在绘图时直接使用。
绘图
PyQt6
在QWidget
中填加QPushButton
QLineEdit
FigureCanvas
,加载时,FigureCanvas
加载一张空白底图,绘图时,把加载的图层删除,用FigureCanvas
和Matplotlib
结合进行绘图,启动加载时,加入self.fig = Figure()
,整个绘图都是在这个fig上绘制,再
self.canvas = FigureCanvas(self.fig)
self.layout.`在这里插入代码片`addWidget(self.canvas)
这样就把绘好的图与QWidget
,保存时,只需要通过fig.savefig
进行保存。
整体就是这么操作的。