sqlite文件读取软件_Python项目:读取文件并绘制图线软件4

4e649d33c5fc8cc184d31d783eb62d3c.png

      学习本项目,你将学会使用tkinter设计界面绑定控件事件,打开文件获取文件路径,使用matplotlib绘制图线等知识点。

f7d8d609b56c9e69c949e36c52c398ac.png

回顾应用效果

  每次编程前我们都回顾项目效果,是为了让自己更清楚我们的目标,更清晰的明白下一步需要做什么

388353c4f3b5af84f7f8e3a193deb22b.png

绘制散点图

1)安装matplotib:

开始菜单-->输入CMD --> pip install matplotlib

9072e48ebac8865632db7f0d17e417cf.png

确认是否安装成功:

开始菜单-->输入CMD --> 输入python-->输入 import matplotlib , 没有报错就说明安装成功了

22813a68073c3ef230e636e3f077b6d4.png

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()函数

看看执行结果:

7aa1de115160466cfb2df245303d478a.png

图线已经绘制出来了,但是这不是我们想要的,我们希望能够点击按钮以后,然后显示图线。我们看看怎么做

d95936be5260ab7e7a3f6e1784fdfd31.png

关联散点图按钮事件显示图线

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函数

看看执行结果:

这节就先到这了,请继续关注哦!

更多免费材料,请关注公众号

f23b02a4a2444edd55e02a672ea5be92.gif

81946c848f7e55e6021955624bdb06a9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值