簡體   English   中英

繪制實驗室時間序列數據熊貓

[英]Plotting labed time series data pandas

我是熊貓的新手。 我想在熊貓中繪制帶標簽的時間序列(每日活動)數據。 水平(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

這確實是一個matplotlib問題...

我沒有試圖復制示例圖的每個特征,但是您會發現其中的漂移。

范例圖片

此圖像的代碼如下...

# --- 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM