时间序列图用于展示随着时间变化的数据值。本文介绍如何适用seaborn画各类时间序列图。
下面示例展示如何画单个时间序列图:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame({'date': ['1/2/2021',
'1/3/2021',
'1/4/2021',
'1/5/2021',
'1/6/2021',
'1/7/2021',
'1/8/2021'],
'value': [4, 7, 8, 13, 17, 15, 21]})
sns.lineplot(x='date', y='value', data=df)
当然我们可以自定义颜色、线宽、线样式、标签和标题:
sns.lineplot(x='date',y='value',data=df, linewidth=1, color='purple').set(title='Time Series Plot')
# 设置x轴文字倾斜
plt.xticks(rotation=15)
下面代码显示如何画多组时间序列图:
#create DataFrame
df = pd.DataFrame({'date': ['1/1/2021',
'1/2/2021',
'1/3/2021',
'1/4/2021',
'1/1/2021',
'1/2/2021',
'1/3/2021',
'1/4/2021'],
'sales': [4, 7, 8, 13, 17, 15, 21, 28],
'company': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B']})
#plot multiple time series
sns.lineplot(x='date', y='sales', hue='company', data=df)
plt.legend(loc='upper left', bbox_to_anchor=(1.02, 1), borderaxespad=0)
hue 参数用于给图中每条线提供不同颜色。
bbox_to_anchor函数用来控制、调整图例框的位置。plt.legend()中的bbox_to_anchor = (x,y,width,height)中四个参数解释如下:
x,y表示图例框的某个点的坐标位置,具体那个点由plt.legend中的参数loc决定,例如:loc = 'center’则x,y表示图例框中心点的位置。
width表示将由x,y表示的原图例框的初始位置水平移动多少距离(距离原图例框的宽度);
height表示将由x,y表示的原图例框的初始位置竖直移动多少距离(距离原图例框的高度);