学习本项目,你将学会使用tkinter设计界面绑定控件事件,打开文件获取文件路径,使用matplotlib绘制图线等知识点。
回顾应用效果
每次编程前我们都回顾项目效果,是为了让自己更清楚我们的目标,更清晰的明白下一步需要做什么
绘制散点图
1)安装matplotib:
开始菜单-->输入CMD --> pip install matplotlib
确认是否安装成功:
开始菜单-->输入CMD --> 输入python-->输入 import matplotlib , 没有报错就说明安装成功了
2)绘制散点图:
import tkinter as tkfrom tkinter import filedialogimport osimport xlrdimport pandas as pd#***********更新获取数据函数import matplotlib.pyplot as plt#*********************def get_curve_data(data_source): df=pd.read_excel(data_source,engine="xlrd") x_value=df.columns.values y_data_st=df.values[0] y_data_nd=df.values[1] return x_value,y_data_st, y_data_nd#省略中间代码:#**************绘制散点图def draw_scatter(): data_array=get_curve_data('curve_data.xlsx') x_data=data_array[1] y_data=data_array[2] plt.scatter(x_data,y_data) plt.show()if __name__=="__main__": #run_UI() draw_scatter()#******************
第7行:导入matplotlib.pyplot
第21行:建立一个draw_scatter() 函数
第22行:实例化一个get_curve_data函数,我们将curve_data.xlsx传入到函数中
第23、24行:我们将第二行的数值传递给data_x,作为我们散点图的x坐标, 而我们将第三行数值传递给data_y ,作为散点图的y坐标
第25行,plt.scatter(x_data,y_data) , 散点图最基本的需要传入X值和Y值
第26行,显示图线到画布
第28行:入口语句。
第30行:调用draw_scatter()函数
看看执行结果:
图线已经绘制出来了,但是这不是我们想要的,我们希望能够点击按钮以后,然后显示图线。我们看看怎么做
关联散点图按钮事件显示图线
1)我们先理理思路,显示UI以后,我们先要获取路径,路径会显示在Text
中,我们需要获取Text中的路径文本,再传入数据获取函数,获取到数据 后进行图线绘制,显示路径在Text中的工作我们已经在open_file 函数实现了,现在我们需要做的就是优化draw_scatter(), 以及绑定button函数:
import tkinter as tkfrom tkinter import filedialogimport osimport xlrdimport pandas as pdimport matplotlib.pyplot as pltdef get_curve_data(data_source): df=pd.read_excel(data_source,engine="xlrd") x_value=df.columns.values y_data_st=df.values[0] y_data_nd=df.values[1] return x_value,y_data_st, y_data_nddef open_file(): file_path=filedialog.askopenfilename(title=u'选择文件',initialdir=(os.path.expanduser('H:/'))) print('打开文件',file_path) if file_path is not None: file_text=file_path text.insert('insert',file_text)def run_UI(): window=tk.Tk() window.title('绘制图线-公众号搜索机械工程师学编程') window.geometry("600x200") window.configure(background="grey") global text text=tk.Text(window,width=80,height=2,bg="lightblue",font=('Arial',12)) text.pack() btn1=tk.Button(window,text="打开文件",width=10,height=1,bg="Orange",command=open_file) btn1.pack() btn1.place(x=250,y=50)#********************绑定散点图button事件 btn2=tk.Button(window,text="散点图",width=10,height=1,bg="lightblue",command=draw_scatter)#*********************************************** btn2.pack() btn2.place(x=50,y=100) btn3=tk.Button(window,text="折线图",width=10,height=1,bg="lightblue") btn3.pack() btn3.place(x=150,y=100) btn4=tk.Button(window,text="直方图",width=10,height=1,bg="lightblue") btn4.pack() btn4.place(x=250,y=100) btn5=tk.Button(window,text="饼图",width=10,height=1,bg="lightblue") btn5.pack() btn5.place(x=350,y=100) btn6=tk.Button(window,text="直方分布图",width=10,height=1,bg="lightblue") btn6.pack() btn6.place(x=450,y=100) window.mainloop()#**************绘制散点图def draw_scatter(): data_path=text.get("1.0",tk.END) data_path_str=data_path[:-1] data_array=get_curve_data(data_path_str) x_data=data_array[1] y_data=data_array[2] plt.scatter(x_data,y_data) plt.show()if __name__=="__main__": run_UI()#**************
第35行:使用command=draw_scatter() 绑定按钮点击事件和draw_scatter()函数
第54行:建立一个draw_scatter() 函数
第55行:从text中获取路径
第56行:处理路径,字符串末尾有一个换行符,我们用切片去掉
第57行:实例化一个get_curve_data函数,我们将路径传入到函数中
第58、59行:我们将第二行的数值传递给data_x,作为我们散点图的x坐标, 而我们将第三行数值传递给data_y ,作为散点图的y坐标
第60行,plt.scatter(x_data,y_data) , 散点图最基本的需要传入X值和Y值
第61行:plt.show()显示图线到画布
第63行:程序运行入口语句
第64行:调用run_UI函数
看看执行结果:
这节就先到这了,请继续关注哦!
更多免费材料,请关注公众号