Python如何绘制⽇历图和热⼒图
本⽂以2019年全国各城市的空⽓质量观测数据为例,利⽤matplotlib、calmap、pyecharts绘制⽇历图和热⼒图。在绘图之前先利⽤pandas对空⽓质量数据进⾏处理。
数据处理
从⽹站下载的数据为逐⼩时数据,每天⼀个⽂件。如果要绘制全年的⽇历图或者热图,⾸先要将所有的数据进⾏合并处理。pycharm python安装教程
下载好数据之后,将数据解压到当前⽬录的2019⽂件夹内,然后处理数据:
import globfrom datetime import datetime, timedeltaimport numpy as npimport pandas as pd
from matplotlib import cm, colorsimport matplotlib.dates as mdatesimport matplotlib.patches as mpatchesimport matplotlib.pyplot as plt
aptana studio 怎么打开def format_aqi(filep, columns=None):  files = glob.glob(filep)
df = pd.concat((pd.read_csv(f) for f in files))  df.index = pd.to_datetime(df.date.astype(np.str) + df.hour.
apply(lambda x: '%02d'%x), format='%Y%m%d%H')  # drop date and hour columns  df.drop(['date', 'hour'], axis=1, inplace=True)
df = df.pivot_table(columns='type', index=df.index)  df.columns.names = ['station', 'type']  df.index.names = ['date']
df = df.stack('station')
if columns is not None:    df = df.loc[:, columns]
return df
filep = '2019/china*.csv'  data = format_aqi(filep)data.csv('2019.csv') # 保存以便后续使⽤
合并完成数据后,读取数据并进⼀步处理:
data = pd.read_csv('2019.csv', index_col='date', parse_dates=True)data2 = data.pivot_table(index=data.index, columns=['station'])
time_range = pd.date_range(datetime(2019, 10, 1, 0), datetime(2019, 12, 31, 23), freq='1h')
idx = pd.IndexSliceaqi = data2.loc[:, idx['AQI', :]].xs('AQI', axis=1)aqi = index(time_range)
cities = ['北京', '天津', '⽯家庄', '邯郸',      '济南', '郑州', '菏泽',      '亳州', '徐州', '驻马店',      '南京', '合肥', '马鞍⼭',    '武汉', '上海', '杭州',      '长沙', '南昌', '上饶', '温州',    '吉安', '赣州', '福州',      '龙岩', '厦门', '泉州'    ]
sub = aqi[cities[::-1]]
绘制热⼒图
因为空⽓质量有专门的配⾊,⾸先设置对应等级的colormap
colors_aqi = ['#009966', '#FFDE33', '#FF9A32', '#CC0033', '#660099']levels = [0, 50, 100, 150, 200, 300]
cmap_aqi = colors.ListedColormap(colors_aqi) norm = colors.BoundaryNorm(levels, cmap_aqi.N)
然后,开始绘图:bow and arrow
fig, ax = plt.subplots(figsize=(16, 9))
三角函数求导公式大全
con = ax.pcolormesh(sub.index.values,                np.arange(0, lumns.shape[0]+1),                sub.T,                cmap=cmap_aqi,                norm=norm,                vmin=0, vmax=300              )
sdate = datetime(2019, 10, 1)edate = datetime(2019, 12, 31)xticks = pd.date_range(sdate, edate, freq='15d')
ax.set_xlim([sdate, edate])ax.set_xticks(xticks)ax.set_xticklabels([i.strftime('%m/%d') for i in xticks])ax.set_yticks(np.arange(0.5, len(cities)))_ = ax.set_yticklabels(sub.T.index.values, fontdict={'family': 'SimHei', 'fontsize': 16})
ytext = [i.get_text() for i in _yticklabels())]
cb = lorbar(con, extend='max', pad=0.02, extendrect=True, extendfrac=0.ap.set_over('#7D0023')
cb.ax.tick_params(axis='both', direction='in', length=0)_ = cb.ax.set_ylabel('Air Quality Index(AQI)', fontdict={'family': 'Times New Roman'})
2019年10⽉-12⽉各城市的AQI⽇变化
绘制⽇历图
python中关于绘制⽇历图的⼯具相对较少,没有特别有些的⼯具。下⾯分别使⽤calmap和pyecharts绘制⽇历图。
注意:本⽂为了简单起见,利⽤AQI绘图时,直接对AQI求⽇均值,但是实际情况下是不能直接这样计算的。
java输出hello worldimport calmap
dd = data[data.station == '北京'].sample('1d').mean()
fig, ax = plt.subplots(figsize=(18, 9))
cmp = arplot(dd, how=None, year=2019,            cmap=cmap_aqi, norm=norm,            vmin=0, vmax=300,          )
ax2 = fig.add_axes([0.94, 0.4, 0.015, 0.2])cb1 = lorbar.ColorbarBase(ax2, cmap=cmap_aqi, ticks=levels,                norm=norm, orientation='vertical',                extend='max', extendrect=True,                extendfrac=0.ap.set_over('#7D0023')c ax.set_ylabel('2019', fontdict=dict(fontsize=26, color='grey'))
2019年北京市AQI⽇历图
下⾯利⽤pyecharts绘制2019年北京市AQI⽇历图。
from pyecharts import options as optsfrom pyecharts.charts import Calendar
begin = datetime(2019, 1, 1)end = datetime(2019, 12, 31)data = [  [str(begin + timedelta(days=i)), dd[i]]  for i in range((end - begin).days + 1)]
c = (  Calendar()  .add(    "",    data,    calendar_opts=opts.CalendarOpts(      range_='2019',      daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),      monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),    ),  )  .set_global_opts(    title_o
2019年北京市AQI⽇历图
绘制热⼒图也可以使⽤seaborn,不需要单独码很多代码,⽽且功能要更多⼀些。python在绘制⽇历图⽅⾯不是⾮常友好,相⽐之下,pyecharts更有优势。但是pyecharts更适合线上可视化展⽰,不太适
儿童编程免费课程合制作⽤于发表论⽂的图。
这次就说到这了,感兴趣的可以去尝试⼀下。
以上就是Python如何绘制⽇历图和热⼒图的详细内容,更多关于Python绘制⽇历图和热⼒图的资料请关注其它相关⽂章!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。