概述
目录
1. 导入库介绍
2. 图片生成代码介绍
1. 导入库介绍
import os
import inspect
import pandas as pd
import numpy as np
from datetime import datetime
# 在jupyter notebook中显示图像
import matplotlib.pyplot as plt
%matplotlib inline
# 在图片中显示中文、负号等
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
import matplotlib
# 在Python中不显示生成的图片
matplotlib.use('Agg')
第一部分前5个库涉及数据处理,第二部分jupyter notebook特定设置,第三部分针对中文图名、图例和负号的显示,第四部分针对生成的多幅图片、不在编译器里显示。
2. 图片生成代码介绍
# 变量初始化设置
emer_sort = pd.DataFrame(columns = ['STARTTIME','WEEK','TIME','MINUTE','BELONGEDLINE','STATIONNAMES'])
# 根据某列数据分类
emer_stagroup = emer.groupby('STATIONNAMES')
# 统计有效的数据天数k,为画多张子图准备
k = 0
for sta_name, sta_group in emer_stagroup:
# 根据STARTTIME列排序
emer1 = sta_group.sort_values(by = 'STARTTIME')
emer_timegroup = emer1.groupby('TIME')
for time_name, time_group in emer_timegroup:
# 选择样本量充足的日期TIME - 5min间隔的样本,192是16个小时
if time_group.shape[0] < 192:
continue
else:
# 添加某天的所有样本点
emer_sort = emer_sort.append(time_group)
k = k + 1
# 纵、横轴的数据
time_group_flow = time_group['FLOW']
time_group_minute = time_group['MINUTE'].to_list()
fig, ax = plt.subplots(figsize = (10, 7))
# 坐标轴刻度字体设置
plt.tick_params(labelsize=13)
ax.plot(time_group_flow.values)
# 坐标轴标题设置
ax.set_xlabel('Date-time', fontsize=14)
ax.set_ylabel('Flow', fontsize=14)
# 图名设置
ax.set_title(time_group['STATIONNAMES'].values[0], fontsize=14)
# 横坐标刻度设置 - 日期如何显示
dates = pd.to_datetime(time_group['MINUTE'])
dates = dates.apply(lambda d: d.strftime('%H:%M'))
ax.set_xticks(np.arange(len(dates))[12::24])
# 横坐标刻度从第12个数开始、每隔24个数显示,倾斜45°
_ = ax.set_xticklabels(dates[12::24], rotation=45)
# 存储
plt.savefig('./fig/fig_lots/flow_%s.png'%k, dpi=200)
# 重新设定dataframe的行标签,并drop之前的标签
emer_sort_set = emer_sort.reset_index(drop = True)
如果程序报错“Out of bounds Datetime: Out of bounds nanosecond timestamp: ...”,并指向这行代码 dates = pd.to_datetime(time_group['MINUTE']),目前的解决办法是将此行与其后一行注释掉。(这个问题在另一篇文章有所讨论,但无定论>_<)
欢迎大家交流讨论~
最后
以上就是温暖毛巾为你收集整理的Matplotlib如何依次生成多张图片 & 仅保存这些图片而不在编译器里显示的全部内容,希望文章能够帮你解决Matplotlib如何依次生成多张图片 & 仅保存这些图片而不在编译器里显示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复