‘’‘請結合numpy庫和Matplotlib庫,根據輸入的指定國家縮寫,
輸出不同國家肉類消費的基本情況和預測(2020及以后的資料是預測)
走勢圖,’’’
"""
Created on Sun Dec 13 15:25:37 2020
@author: GuaPiXiong
"""
'''請結合numpy庫和Matplotlib庫,根據輸入的指定國家縮寫,
輸出不同國家肉類消費的基本情況和預測(2020及以后的資料是預測)
走勢圖,'''
import csv
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
import tkinter as tk
def readDataKg(name):
beefDataKg=[]
pigDataKg=[]
poultryDataKg=[]
sheepDataKg=[]
with open('./numpy和matplotlib的應用/meat_consumption_worldwide.csv','r') as s:
reader=csv.reader(s) #為包含所有的串列物件,不可關閉檔案
for row in reader:
if name in row and 'BEEF' in row and 'KG_CAP' in row:
beefDataKg.append((row[3],row[4]))
if (name in row) and ('PIG' in row) and 'KG_CAP' in row:
pigDataKg.append((row[3],row[4]))
if name in row and 'POULTRY' in row and 'KG_CAP' in row:
poultryDataKg.append((row[3],row[4]))
if name in row and 'SHEEP' in row and 'KG_CAP' in row:
sheepDataKg.append((row[3],row[4]))
return beefDataKg,pigDataKg,poultryDataKg,sheepDataKg
def readDataTHND_TONNE(name):
beefDataT=[]
pigDataT=[]
poultryDataT=[]
sheepDataT=[]
with open('./numpy和matplotlib的應用/meat_consumption_worldwide.csv','r') as s:
reader=csv.reader(s) #為包含所有的串列物件,不可關閉檔案
for row in reader:
if name in row and 'BEEF' in row and 'THND_TONNE' in row:
beefDataT.append((row[3],row[4]))
if (name in row) and ('PIG' in row) and 'THND_TONNE' in row:
pigDataT.append((row[3],row[4]))
if name in row and 'POULTRY' in row and 'THND_TONNE' in row:
poultryDataT.append((row[3],row[4]))
if name in row and 'SHEEP' in row and 'THND_TONNE' in row:
sheepDataT.append((row[3],row[4]))
return beefDataT,pigDataT,poultryDataT,sheepDataT
def pltShow(name,beefData,pigData,poultryData,sheepData,dataType):
matplotlib.rcParams['font.family']='Kaiti' #中文正常顯示
# x=np.array(filter(lambda x:int(x[0]),beefData))
x1=np.array([int(i[0]) for i in beefData])
x2=np.array([int(i[0]) for i in pigData])
x3=np.array([int(i[0]) for i in poultryData])
x4=np.array([int(i[0]) for i in sheepData])
yBeef=np.array([round(float(i[1]),2) for i in beefData])
# print(x,yBeef)
# print(type(yBeef))
yPig=np.array([round(float(i[1]),2) for i in pigData])
yPoultry=np.array([round(float(i[1]),2) for i in poultryData])
ySheep=np.array([round(float(i[1]),2) for i in sheepData]) #保留兩位小數
plt.suptitle(name+'肉類消費基本情況及預測')
plt.subplot(2,2,1)
plt.plot(x1[:-7],yBeef[:-7],'ro-',x1[-7:],yBeef[-7:],'bv:')
# plt.xticks(x)
plt.xlabel('年份/year')
plt.ylabel(dataType)
plt.legend(['BEEF','未來預測'])
plt.subplot(2,2,2)
plt.plot(x2[:-7],yPig[:-7],'ro-',x2[-7:],yPig[-7:],'bv:')
# plt.xticks(x)
plt.xlabel('年份/year')
plt.ylabel(dataType)
plt.legend(['PIG','未來預測'])
plt.subplot(2,2,3)
plt.plot(x3[:-7],yPoultry[:-7],'ro-',x3[-7:],yPoultry[-7:],'bv:')
# plt.xticks(x)
plt.xlabel('年份/year')
plt.ylabel(dataType)
plt.legend(['POULTRY','未來預測'])
plt.subplot(2,2,4)
plt.plot(x4[:-7],ySheep[:-7],'ro-',x4[-7:],ySheep[-7:],'bv:')
# plt.xticks(x)
plt.xlabel('年份/year')
plt.ylabel(dataType)
plt.legend(['SHEEP','未來預測'])
plt.show()
# name=input()
# beefData=[]
# pigData=[]
# poultryData=[]
# sheepData=[]
# name='AUS' #選擇1
# dataType='THND_TONNE' #選擇2
# beefData,pigData,poultryData,sheepData=readDataKg(name)
# pltShow(name, beefData, pigData, poultryData, sheepData, dataType)
def run0(input1):
name = str(input1.get())
if len(name)==0 :pass
else:
btn1 = tk.Button(root, text='單位為KG_CAP', command=lambda :run1(name))
btn1.place(relx=0.2, rely=0.6, relwidth=0.3, relheight=0.1)
btn2 = tk.Button(root, text='單位為THND_TONNE', command=lambda :run2(name))
btn2.place(relx=0.2, rely=0.8, relwidth=0.4, relheight=0.1)
def run1(name):
beefData=[]
pigData=[]
poultryData=[]
sheepData=[] #選擇1
dataType='KG_CAP' #選擇2
beefData,pigData,poultryData,sheepData=readDataKg(name)
pltShow(name, beefData, pigData, poultryData, sheepData, dataType)
def run2(name):
beefData=[]
pigData=[]
poultryData=[]
sheepData=[] #選擇1
dataType='THND_TONNE' #選擇2
beefData,pigData,poultryData,sheepData=readDataTHND_TONNE(name)
pltShow(name, beefData, pigData, poultryData, sheepData, dataType)
'''GUI'''
def main():
global root
root = tk.Tk()
root.geometry('460x240')
root.title('猜單詞')
lb1 = tk.Label(root, text='請輸入指定國家縮寫,然后點擊確認選擇按鈕')
lb1.place(relx=0.2, rely=0.1, relwidth=0.7, relheight=0.1)
input1 = tk.Entry()
input1.place(relx=0.2, rely=0.2, relwidth=0.3, relheight=0.1)
tk.Button(root, text='確定', command=lambda: run0(input1)).place(relx=0.2,rely=0.4)
# btn1 = tk.Button(root, text='單位為KG_CAP', command=lambda :run1(name))
# btn1.place(relx=0.2, rely=0.6, relwidth=0.3, relheight=0.1)
# btn2 = tk.Button(root, text='單位為THND_TONNE', command=lambda :run2(name))
# btn2.place(relx=0.2, rely=0.8, relwidth=0.4, relheight=0.1)
root.mainloop()
if __name__=='__main__':
main()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/235036.html
標籤:python
下一篇:求大神解答
