2015-04-06 47 views
1

我是熊猫新手。我想绘制熊猫标记的时间序列(日常活动)数据。水平(x轴)代表时间,垂直(y轴)代表每个活动的标签。在横向上,我想要一个时间序列表示活动发生的点。我的数据集看上去象下面这样:绘制实验时间序列数据熊猫

[58]: 
     import pandas as pd 
     from random import random 
     from datetime import datetime 
     rng = pd.date_range('1/1/2011', periods=5, freq='H') 
     Activity = ([True,True,False,True,False]) 
     ts = pd.DataFrame(Activity, index=rng, columns=['activity']) 
     data = ts.asfreq('45Min', method='pad') 
     data 
Out[58]: 
           activity 
     2011-01-01 00:00:00 True 
     2011-01-01 00:45:00 True 
     2011-01-01 01:30:00 True 
     2011-01-01 02:15:00 False 
     2011-01-01 03:00:00 True 
     2011-01-01 03:45:00 True 

随后的情节是这样的: https://www.dropbox.com/s/scimfsnqrvimmoq/Untitled.png?dl=0

回答

0

这的确是一个问题matplotlib ...

我并不寻求复制的每一个功能的例如情节,但你会得到漂移。

Example image

此图片的代码如下...

# --- initial data 
import pandas as pd 
from random import random 
from datetime import datetime 
rng = pd.date_range('1/1/2011', periods=5, freq='H') 
Activity = ([True,True,False,True,False]) 
ts = pd.DataFrame(Activity, index=rng, columns=['activity']) 
data = ts.asfreq('45Min', method='pad') 

# --- organise the data for plotting 
data['colour'] = 'green' 
data.colour = data.colour.where(~data.activity, other='red') 
data['sz'] = 100 
data.sz = data.sz.where(~data.activity, other=50) 
data['position'] = data.activity.astype(int) 
print(data) 

# --- plot the data 
import matplotlib.pyplot as plt 
from matplotlib.ticker import FixedLocator 
fig, ax = plt.subplots(figsize=(8,4)) 
ax.scatter(data.index, data.position, s=data.sz, c=data.colour) 

# - the x axis 
ax.set_xlim(['2010-12-31 23:00:00','2011-01-01 04:45:00']) 
ax.spines['top'].set_color('none') 
ax.xaxis.set_ticks_position('bottom') 

# - the y axis 
ax.set_ylim(-1, 2) 
ax.spines['right'].set_color('none') 
ax.yaxis.set_ticks_position('left') 
labels = ['False', 'True'] 
tick_locations = [0, 1] 
ax.yaxis.set_major_locator(FixedLocator(tick_locations)) 
ax.set_yticklabels(labels, minor=False) 
# - and display 
plt.show() 

我有一个matplotlib这里小抄:http://bit.ly/python_cs

+0

谢谢你回答这么快 – 2015-04-08 06:19:30

+0

如果你很高兴与回答,你可能想接受它。 – 2015-04-08 09:22:24