2015-04-06 3 views
1

Я новичок в пандах. Я хочу нанести помеченные данные о временных рядах (ежедневной активности) в пандах. По горизонтали (по оси x) представляет время и по вертикали (по оси y) обозначает каждую операцию. По горизонтали, я хочу точку, в которой временный ряд говорит, что активность произошла. Мой набор данных выглядит следующим образом:Запланированные данные о временных рядах данных pandas

[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

Спасибо за ответы так быстро –

+0

Если вы счастливы с ответ, вы можете принять его. –

Смежные вопросы