|  |  | @ -0,0 +1,330 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import joblib | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import datetime as DT | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import GetModel | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | from pyecharts.charts import Bar, Grid, Line, Tab | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | from pyecharts.components import Table | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | from pyecharts.options import ComponentTitleOpts | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | from pyecharts.charts import Map | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | from pyecharts import options as opts | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 训练并保存模型并返回MAE | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import ProcessData | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import GetData | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | r = GetModel.getModel() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | print("MAE:", r[0]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 读取保存的模型 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | model = joblib.load('Model.pkl') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 最终预测结果 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | preds = model.predict(r[1]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | print("未来7天预测") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | for a in range(0, 7): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     today = DT.datetime.now() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     time = (today + DT.timedelta(days=a)).date() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     print(time.year, '-', time.month, '-', time.day, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           '最高气温', preds[a][0], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           '最低气温', preds[a][1], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           "空气质量", preds[a][2], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 数据可视化代码 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 通过爬虫获取到的天气信息,利用pyecharts框架来实现绘图功能,实现天气的可视化 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 可视化当日长春天气数据 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 获取当日长春天气数据 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | today_data = GetData.getToday(54161) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | headers_ = ["日期", "最高温", "最低温", "天气", "风力风向", "空气质量指数"] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | rows_ = [ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     [today_data['日期'].values[0], today_data['最高温'].values[0], today_data['最低温'].values[0], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      today_data['天气'].values[0], today_data['风力风向'].values[0], today_data['空气质量指数'].values[0]], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | def table_main() ->Table: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   c=( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     Table() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     .add(headers_, rows_) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     .set_global_opts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         title_opts=ComponentTitleOpts(title="", subtitle="") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   return c | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 可视化当日长春近一周的天气质量和气温 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 获取最近七天的天气数据 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | week_data=GetData.getWeek(54161) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 最近长春一周的天气和空气 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | airs = ProcessData.setAir(week_data) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | low_temperature = ProcessData.setLowTemp(week_data) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | high_temperature = ProcessData.setHighTemp(week_data) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | def grid_week() -> Grid: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     x_data = ["前七天", "前六天", "前五天", "前四天", "前三天", "前两天", "前一天"] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     bar = ( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         Bar() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_xaxis(x_data) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_yaxis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             "最高温", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |            high_temperature, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis_index=0, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             color="#d14a61", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_yaxis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             "最低温", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             low_temperature, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis_index=1, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             color="#5793f3", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .extend_axis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis=opts.AxisOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 name="最高温", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 type_="value", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 min_=-30, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 max_=40, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 position="right", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axisline_opts=opts.AxisLineOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     linestyle_opts=opts.LineStyleOpts(color="#d14a61") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axislabel_opts=opts.LabelOpts(formatter="{value} °C"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .extend_axis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis=opts.AxisOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 type_="value", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 name="天气质量指数", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 min_=0, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 max_=300, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 position="left", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axisline_opts=opts.AxisLineOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     linestyle_opts=opts.LineStyleOpts(color="#675bba") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axislabel_opts=opts.LabelOpts(formatter="{value}"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 splitline_opts=opts.SplitLineOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .set_global_opts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis_opts=opts.AxisOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 name="最低温", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 min_=-30, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 max_=40, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 position="right", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 offset=80, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axisline_opts=opts.AxisLineOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     linestyle_opts=opts.LineStyleOpts(color="#5793f3") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axislabel_opts=opts.LabelOpts(formatter="{value} °C"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             title_opts=opts.TitleOpts(title=""), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     line = ( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         Line() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_xaxis(x_data) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_yaxis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             "天气质量指数 " | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             "优(0~50) 良(51~100) 轻度(101~150) 中度(151~200) 重度(201~300)", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             airs, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis_index=2, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             color="#675bba", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             label_opts=opts.LabelOpts(is_show=False), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     bar.overlap(line) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return Grid().add( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 可视化预测长春的天气 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 预测长春一周的天气和空气 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | predict_airs=[] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | predict_low_temperature=[] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | predict_high_temperature=[] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | x_data=[] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | for i in range(0,7): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     predict_high_temperature.append(round(preds[i][0],4)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     predict_low_temperature.append(round(preds[i][1],4)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     predict_airs.append(round(preds[i][2],4)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     x_data.append((today + DT.timedelta(days=i)).date()) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | def grid_week_predict() -> Grid: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     bar = ( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         Bar() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_xaxis(x_data) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_yaxis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             "最高温", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |            predict_high_temperature, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis_index=0, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             color="#d14a61", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_yaxis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             "最低温", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             predict_low_temperature, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis_index=1, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             color="#5793f3", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .extend_axis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis=opts.AxisOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 name="最高温", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 type_="value", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 min_=-30, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 max_=40, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 position="right", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axisline_opts=opts.AxisLineOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     linestyle_opts=opts.LineStyleOpts(color="#d14a61") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axislabel_opts=opts.LabelOpts(formatter="{value} °C"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .extend_axis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis=opts.AxisOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 type_="value", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 name="天气质量指数", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 min_=0, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 max_=300, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 position="left", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axisline_opts=opts.AxisLineOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     linestyle_opts=opts.LineStyleOpts(color="#675bba") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axislabel_opts=opts.LabelOpts(formatter="{value}"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 splitline_opts=opts.SplitLineOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .set_global_opts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis_opts=opts.AxisOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 name="最低温", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 min_=-30, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 max_=40, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 position="right", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 offset=80, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axisline_opts=opts.AxisLineOpts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     linestyle_opts=opts.LineStyleOpts(color="#5793f3") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 axislabel_opts=opts.LabelOpts(formatter="{value} °C"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             title_opts=opts.TitleOpts(title=""), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     line = ( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         Line() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_xaxis(x_data) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add_yaxis( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             "天气质量指数 " | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             "优(0~50) 良(51~100) 轻度(101~150) 中度(151~200) 重度(201~300)", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             predict_airs, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             yaxis_index=2, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             color="#675bba", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             label_opts=opts.LabelOpts(is_show=False), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     bar.overlap(line) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return Grid().add( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 获取全国各省会城市今日的天气情况 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | china_today = GetData.getChinaToday() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | china_today.to_csv("china_today.csv") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | def setData(str,i): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return china_today[i:i+1][str].values[0] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | provinces = [ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     "黑龙江","内蒙古", "吉林",  "辽宁", "河北","天津","山西", "陕西", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     "甘肃","宁夏", "青海","新疆", "西藏", "四川", "重庆", "山东", "河南", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     "江苏", "安徽","湖北", "浙江", "福建", "江西", "湖南", "贵州", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     "广西", "海南","上海","广东","云南","台湾" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | rows=[] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | for i in range(0,31): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     rows.append([provinces[i],setData('最低温',i),setData('最高温',i),setData('天气',i),setData('风力风向',i)]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | def today_china_table() ->Table: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   c=( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     Table() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     .add(["省份","最低温","最高温", "天气", "风力风向"], rows) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     .set_global_opts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      title_opts=ComponentTitleOpts(title="今日全国各省会城市的天气信息表", subtitle="") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   return c | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | china_airs = ProcessData.setAir(china_today) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | airs_list=[] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | for i in range(0,31): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     airs_list.append(china_airs[i]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | def today_china() ->Map: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     c = ( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         Map() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .add("天气质量指数 优(0~50) 良(51~100) 轻度(101~150) 中度(151~200) 重度(201~300)", [list(z) for z in zip(provinces, airs_list)], "china") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         .set_global_opts( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |          title_opts=opts.TitleOpts(title="今日中国空气质量"), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |          visualmap_opts=opts.VisualMapOpts(max_=300), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return c | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 分页图的标题 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | tab = Tab() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | tab.add(table_main(), "今日长春") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | tab.add(grid_week_predict(), "未来长春") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | tab.add(grid_week(), "近一周长春") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | tab.add(today_china_table(), "今日中国天气") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | tab.add(today_china(), "今日全国空气质量") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | tab.render("天气网.html") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     all_high_t = [] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     all_low_t = [] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     all_air = [] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     all_high_t.append(preds[a][0]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     all_low_t.append(preds[a][1]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     all_air.append(preds[a][2]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | temp = {"最高温": all_high_t, "最低温": all_low_t, "空气质量": all_air} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 绘画折线图 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.plot(range(1, 7), temp["最高温"], color="red", label="high_t") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.plot(range(1, 7), temp["最低温"], color="blue", label="low_t") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.legend()  # 显示图例 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.ylabel("Temperature(°C)") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.xlabel("day") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | # 显示 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.show() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.plot(range(1, 7), temp["空气质量"], color="black", label="air") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.legend() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.ylabel(" ") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.xlabel("day") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | plt.show() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ''' |