比如针对一个时间序列,从0点到24点,每分钟的横坐标都显示出来,一是影响美观,而是不方便抓住重点。因此我们只想要显示部分数据的横坐标,比如只显示整点时间的横坐标。
运用工具:matplotlib.ticker
代码:
import matplotlib.ticker as ticker
import seaborn as sns
for i, k in enumerate(detids[:1]):
temp_img = model_data[model_data['detid'] == k]
for day in days[:1]:
temp_img = temp_img[temp_img['day'] == day]
idx= pd.date_range(start=day, periods=480, freq='180S').strftime('%H:%M:%S')
temp_img['time'] = idx
fig = plt.figure(figsize=(10, 8))
plt.rcParams['axes.facecolor']='snow' # 图的背景颜色
fig.patch.set_facecolor('white') # 画布的背景颜色
ax = plt.subplot(2, 1, 1)
plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(24)) # 设置显示24个横坐标
sns.lineplot(x='time', y='flow', data=temp_img)
ax.set_title('flow')
ax = plt.subplot(2, 1, 2)
plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(24)) # 设置显示24个横坐标
sns.lineplot(x='time', y='occ', data=temp_img)
ax.set_title('occupy')
plt.suptitle(k + ' ' + day)
plt.tight_layout()
效果如下