Python大作业进阶(二)

将已绘制的图用图形用户界面打开

需要用到 Tkinter 模块
加分值:5分?(不能再多了,毕竟百度一搜就可以做出来)
实现代码:

import tkinter
import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
import matplotlib as plt
import csv

plt.rcParams['font.sans-serif']=['SimHei']
f = open('Province_GDP.csv', 'r',encoding='utf-8')
csvreader = csv.reader(f)
final_list = list(csvreader)

# 将表格中的每个数据的格式改为float类型(之前的为str)
del(final_list[0])
final_ = []
for i in range(len(final_list)):
       fin = list(map(lambda x :float(x),final_list[i][1:]))
       fin.insert(0,final_list[i][0])
       final_.append(fin)

# 将数据以2018年数据排序
final_ = sorted(final_,key=lambda x:x[1],reverse=True)
#print(final_)

root = tkinter.Tk()  # 创建tkinter的主窗口
root.title("全国各省2010-2018年GDP变化折线图(x:年,y:亿元)") # tkinter的标题

f = Figure(figsize=(5,3), dpi=100) # 画布尺寸

days = list(range(2010,2019))
sub_plots = [221,222,223,224]
for j in range(4):
       f.suptitle('全国各省2010-2018年GDP变化折线图(x:年,y:亿元)\n根据各省2018年GDP排序')
       a = f.add_subplot(sub_plots[j])
       if j != 3:
              for i in range(8*j,8+8*j):
                     shuju =(final_[i][1:])[::-1]
                     a.plot(days, shuju,'.-',label = final_[i][0])
                     a.legend(loc=2) #将图例放在左上角
       else :
              for i in range(8*j,8+8*j-1):
                     shuju =(final_[i][1:])[::-1]
                     a.plot(days, shuju,'.-',label = final_list[i][0])
                     a.legend(loc=2)


# 将绘制的图形显示到tkinter:创建属于root的canvas画布,并将图f置于画布上
canvas = FigureCanvasTkAgg(f, master=root)
canvas.draw()  # 注意show方法已经过时了,这里改用draw
canvas.get_tk_widget().pack(side=tkinter.TOP,  # 上对齐
                            fill=tkinter.BOTH,  # 填充方式
                            expand=tkinter.YES)  # 随窗口大小调整而调整
                            
"""
# matplotlib的导航工具栏显示上来(默认是不会显示它的)
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas._tkcanvas.pack(side=tkinter.TOP,  # get_tk_widget()得到的就是_tkcanvas
                      fill=tkinter.BOTH,
                      expand=tkinter.YES)
"""

def _quit():
    # 点击退出按钮时调用这个函数
    root.quit()  # 结束主循环
    root.destroy()  # 销毁窗口

# 创建一个按钮,并把上面那个函数绑定过来
button = tkinter.Button(master=root, text="退出", command=_quit)
# 按钮放在下边
button.pack(side=tkinter.BOTTOM)

# 主循环
root.mainloop()

结果展示:
在这里插入图片描述
感觉没区别?怎么可能,还是有差距的,左上角就是差距/滑稽/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arik (IoT)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值