Pandas和Bokeh绘制多条折线图

Pandas和Bokeh绘制多条折线图

在本文中,我们将介绍如何使用Pandas和Bokeh绘制多条折线图。Pandas是Python数据分析领域的一个强大的工具,它可以处理数百个不同的数据类型并支持多种数据结构。而Bokeh是一个交互性的数据可视化库,它可以让我们创建漂亮的图表,并使得用户可以通过控件进行交互。

阅读更多:Pandas 教程

Pandas数据准备

在开始绘制多条折线图之前,我们需要使用Pandas来准备我们的数据。对于本文,我们将使用一个包含多个时间序列数据的DataFrame,每个时间序列数据都对应着一个城市的气温记录数据。下面是一个简单的例子:

import pandas as pd
import numpy as np

data = {'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
        'temp': [[-4, 2, 6, 10, 13, 17, 20, 20, 16, 10, 3, -2],
                 [2, 3, 9, 14, 19, 23, 27, 26, 22, 16, 9, 3],
                 [12, 13, 15, 21, 25, 26, 27, 27, 26, 23, 19, 14],
                 [13, 15, 19, 23, 26, 28, 30, 29, 28, 25, 21, 15]]}
df = pd.DataFrame(data)

df['months'] = np.arange(1, 13)
df = pd.melt(df, id_vars=['city', 'months'], value_name='temp')
df = df.drop(columns=['variable'])
Python

这段代码创建了一个包含4个城市的DataFrame。每行的“temp”列包含了对应城市某个月份的气温数据。这里使用了melt函数将DataFrame从“宽格式”转为“长格式”,以便进行数据处理和绘图。

使用Bokeh绘制多条折线图

现在我们已经有了一个准备好的数据集,接下来可以使用Bokeh来绘制多条折线图。为了绘制多条折线图,我们可以使用Bokeh的multi_line函数。下面的代码演示了如何使用此函数来绘制4个城市的气温记录数据:

from bokeh.plotting import figure, show
from bokeh.models import HoverTool

group = df.groupby('city')
colors = ['#fd8d3c', '#5e4fa2', '#8c6bb1', '#ed1c24']

p = figure(title="Temperature records by city (2018)", x_axis_label='Month', y_axis_label='Temperature')
p.multi_line(xs=[group.get_group(x)['months'].values for x in group.groups],
             ys=[group.get_group(x)['temp'].values for x in group.groups],
             color=colors,
             line_width=2)
p.add_tools(HoverTool(tooltips=[('City', '@city'),
                                ('Temperature', '@temp{int}℃')]))

show(p)
Python

这段代码做了以下几件事情:

  1. 首先,我们使用groupby函数将数据按照城市分组。
  2. 接下来,我们指定了每个城市对应的线条颜色,以便进行区分。
  3. 然后,我们创建了一个Figure,并使用multi_line函数将每个城市的数据绘制到同一个图表上。
  4. 最后,我们添加了一个悬停工具,当用户将鼠标悬停在折线上时,会显示该位置的城市和温度数据。

总结

使用Pandas和Bokeh可以轻松地绘制多条折线图。通过使用Pandas准备数据以及使用Bokeh的multi_line函数,我们可以在同一个图表中显示多个时间序列的数据,从而有助于进行比较和分析。同时,Bokeh的交互性功能可以使得用户可以通过控件进行交互,进一步加强了数据展示和分析的体验。

在实际的数据分析中,我们可以通过修改数据集和调整图表的属性来更好地满足我们的需求。如果您还没有使用过Pandas和Bokeh来进行数据分析和可视化,那么希望这篇文章可以为您提供一个良好的起点。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册