[英]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.