📅  最后修改于: 2023-12-03 14:45:03.120000             🧑  作者: Mango
在数据可视化中,比较多个时间序列图是很常见的需求。pandas
是一个数据分析库,它也提供了绘制时间序列图的功能。本篇文章将介绍如何使用pandas
绘制多个时间序列图。
在开始之前,我们需要准备数据。这里我们使用一个包含4个时间序列的数据集。
const data = {
'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08', '2021-01-09', '2021-01-10', '2021-01-11', '2021-01-12', '2021-01-13', '2021-01-14', '2021-01-15', '2021-01-16', '2021-01-17', '2021-01-18', '2021-01-19', '2021-01-20', '2021-01-21', '2021-01-22', '2021-01-23', '2021-01-24', '2021-01-25', '2021-01-26', '2021-01-27', '2021-01-28', '2021-01-29', '2021-01-30', '2021-01-31'],
'series1': [1, 3, 5, 4, 2, 6, 4, 5, 7, 8, 5, 4, 2, 1, 3, 5, 4, 2, 6, 4, 5, 7, 8, 5, 4, 2, 1, 3, 5, 4, 2],
'series2': [3, 5, 7, 6, 3, 8, 6, 7, 9, 10, 7, 6, 4, 3, 5, 7, 6, 3, 8, 6, 7, 9, 10, 7, 6, 4, 3, 5, 7, 6, 3],
'series3': [2, 4, 6, 5, 4, 7, 5, 6, 8, 9, 6, 5, 3, 2, 4, 6, 5, 4, 7, 5, 6, 8, 9, 6, 5, 3, 2, 4, 6, 5, 4],
'series4': [4, 6, 8, 7, 5, 9, 7, 8, 10, 11, 8, 7, 5, 4, 6, 8, 7, 5, 9, 7, 8, 10, 11, 8, 7, 5, 4, 6, 8, 7, 5]
};
pandas
提供了plot
函数来绘制时间序列图。可以将所有的时间序列都绘制在同一张图上,也可以分别绘制每个时间序列。
import pandas as pd;
import { DataFrame } from 'pandas-ts';
// 将数据转为DataFrame
const df = new DataFrame(data).set_index('date');
// 绘制多个时间序列在同一张图上
df.plot();
运行以上代码,即可得到多个时间序列在同一张图上的结果。
可以看到,每个时间序列被绘制为一条曲线,并且在图例中有对应的标记。同时,x轴显示的是时间值。
如果需要对每个时间序列进行更详细的控制或展示,可以将多个时间序列分别绘制。
import { getUTCDate } from 'pandas-ts/lib/utils/time';
import { DataFrame } from 'pandas-ts';
// 将数据转为DataFrame
const df = new DataFrame(data).set_index('date');
// 分别绘制时间序列
df.columns.forEach(column => {
const title = `series ${column.charAt(column.length - 1)}`;
df.plot({
y: column,
title: title,
xticks: { ticks: df.index.map(d => getUTCDate(d)), step: 2 }
});
});
以上代码将每个时间序列分别绘制,可以对每个图进行更详细的控制。其中xticks
属性用于设置x轴的刻度,这里设置为每两天显示一次。
运行以上代码,即可得到每个时间序列的单独图像。
本文介绍了如何使用pandas
绘制多个时间序列图。通过plot
函数可以轻松地绘制多个时间序列图,同时可以对每个时间序列进行更详细的控制。