Python Pyecharts绘制北京、上海、广州、深圳空气质量日历热力图
读取数据
import pandas as pd bj = pd.read_csv('beijing_aqi.csv') sh = pd.read_csv('shanghai_aqi.csv') gz = pd.read_csv('guangzhou_aqi.csv') sz = pd.read_csv('shenzhen_aqi.csv')
将Date列转换为datetime格式
bj['Date'] = pd.to_datetime(bj['Date']) sh['Date'] = pd.to_datetime(sh['Date']) gz['Date'] = pd.to_datetime(gz['Date']) sz['Date'] = pd.to_datetime(sz['Date'])
导入pyecharts
from pyecharts import options as opts from pyecharts.charts import HeatMap from pyecharts.faker import Faker
绘制北京日历热力图
bj_data = bj[['Date', 'AQI']].values.tolist() bj_heatmap = ( HeatMap() .add_xaxis(list(set(bj['Date'].dt.date.astype(str).tolist()))) .add_yaxis( "", list(set(bj['Date'].dt.weekday.astype(str).tolist())), bj_data, label_opts=opts.LabelOpts(is_show=False), ) .set_global_opts( title_opts=opts.TitleOpts(title='北京日历热力图'), visualmap_opts=opts.VisualMapOpts( min_=0, max_=500, orient='horizontal', is_piecewise=True, pos_top='230px', pos_left='100px', ), calendar_opts=opts.CalendarOpts( range_=['2020-01', '2020-12'], pos_top='120px', pos_left='30px', yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False), ), ) )
绘制上海日历热力图
sh_data = sh[['Date', 'AQI']].values.tolist() sh_heatmap = ( HeatMap() .add_xaxis(list(set(sh['Date'].dt.date.astype(str).tolist()))) .add_yaxis( "", list(set(sh['Date'].dt.weekday.astype(str).tolist())), sh_data, label_opts=opts.LabelOpts(is_show=False), ) .set_global_opts( title_opts=opts.TitleOpts(title='上海日历热力图'), visualmap_opts=opts.VisualMapOpts( min_=0, max_=500, orient='horizontal', is_piecewise=True, pos_top='230px', pos_left='100px', ), calendar_opts=opts.CalendarOpts( range_=['2020-01', '2020-12'], pos_top='120px', pos_left='30px', yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False), ), ) )
绘制广州日历热力图
gz_data = gz[['Date', 'AQI']].values.tolist() gz_heatmap = ( HeatMap() .add_xaxis(list(set(gz['Date'].dt.date.astype(str).tolist()))) .add_yaxis( "", list(set(gz['Date'].dt.weekday.astype(str).tolist())), gz_data, label_opts=opts.LabelOpts(is_show=False), ) .set_global_opts( title_opts=opts.TitleOpts(title='广州日历热力图'), visualmap_opts=opts.VisualMapOpts( min_=0, max_=500, orient='horizontal', is_piecewise=True, pos_top='230px', pos_left='100px', ), calendar_opts=opts.CalendarOpts( range_=['2020-01', '2020-12'], pos_top='120px', pos_left='30px', yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False), ), ) )
绘制深圳日历热力图
sz_data = sz[['Date', 'AQI']].values.tolist() sz_heatmap = ( HeatMap() .add_xaxis(list(set(sz['Date'].dt.date.astype(str).tolist()))) .add_yaxis( "", list(set(sz['Date'].dt.weekday.astype(str).tolist())), sz_data, label_opts=opts.LabelOpts(is_show=False), ) .set_global_opts( title_opts=opts.TitleOpts(title='深圳日历热力图'), visualmap_opts=opts.VisualMapOpts( min_=0, max_=500, orient='horizontal', is_piecewise=True, pos_top='230px', pos_left='100px', ), calendar_opts=opts.CalendarOpts( range_=['2020-01', '2020-12'], pos_top='120px', pos_left='30px', yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False), ), ) )
将四个城市的日历热力图合并
from pyecharts.charts import Grid grid = Grid() grid.add(bj_heatmap, grid_opts=opts.GridOpts(pos_left='10%', pos_right='55%')) grid.add(sh_heatmap, grid_opts=opts.GridOpts(pos_left='45%', pos_right='10%')) grid.add(gz_heatmap, grid_opts=opts.GridOpts(pos_left='10%', pos_right='55%', pos_top='60%')) grid.add(sz_heatmap, grid_opts=opts.GridOpts(pos_left='45%', pos_right='10%', pos_top='60%')) grid.render('heatmap.html')
原文地址: http://www.cveoy.top/t/topic/oszi 著作权归作者所有。请勿转载和采集!