python画子图循环_python for循环画多子图并保存(涉及DateFrame.groupby,add_subplot)

python for循环画多子图并保存(涉及DateFrame.groupby,add_subplot)

发布时间:2018-09-06 20:16,

浏览次数:824

, 标签:

python

for

DateFrame

groupby

add

subplot

问题描述:最近要把杭州市地磁检测器中交通流量按照时间序列画图,每个路口画一张图,每个路口有多个车道,每个车道下包含一个检测器

数据形式:

代码:

import pandas as pd import psycopg2 import matplotlib.pyplot as plt import

datetime as dt import matplotlib.dates as mdate str_date = '2018-08-12' count =

0 #连接数据库 data = call_postgres(str_date, coon) # 把路口ID去重,得到所有路口ID

all_road_id_list = data.drop_duplicates(['devc_id'])['devc_id'].tolist()

"""data在call_postgres()中已经转化成DateFrame格式,再通过路口ID和车道ID分组,得到每个检测器的所有数据""" df =

data.groupby(['devc_id', 'devc_lane']) for i in range(len(all_road_id_list)):

#设置画布大小 fig = plt.figure(figsize=(16, 16)) for group in df.groups:

#group是一个元组,包含了分组的路口ID和车道ID print(group) print('========================1') #

print(group[0]) #get_group()得到每个检测器的数据 grouped_data = df.get_group(group)

time_strseries = grouped_data['acquisition_time'].tolist()#检测器发送数据的时间

volume_intseries = grouped_data['flow']#流量 #目的是获取一个路口的数据 if

str(all_road_id_list[i]) == str(group[0]): count += 1 #计算每个路口的车道数 #

count_list.append(count) print(count) # 画子图 ax = fig.add_subplot(4, 4, count)

#设置X轴时间序列的格式,这里是只取小时 ax.xaxis.set_major_formatter(mdate.DateFormatter('%H')) #

plt.gca().xaxis.set_major_locator(mdate.DayLocator()) # datetime_start =

dt.datetime.strptime('00:00:00', '%H:%M:%S') #设置X轴范围 datetime_start =

time_strseries[0] datatime_1day = dt.timedelta(days=1) datetime_end =

datetime_start + datatime_1day plt.xlim([datetime_start, datetime_end]) #

时间间隔,时间标签旋转45度 plt.xticks(pd.date_range(datetime_start, datetime_end,

freq='6H'),rotation=45) plt.plot(time_strseries, volume_intseries)

ax.set_ylabel("flow") ax.set_xlabel("time") plt.title("flow-time:" + group[0] +

"-" + group[1] + "") # 自动旋转日期标记 # plt.gcf().autofmt_xdate() # 自动调整子图的间距

plt.tight_layout() #保存图片 plt.savefig("C:/image/'" + all_road_id_list[i] +

"'.png") # plt.show() # input() #每个路口结束,清空 count = 0

输出结果:

你可能感兴趣的:(python画子图循环)