<p>下面是一个使用Pandas和Matplotlib的解决方案,它具有更细粒度的控制。在</p>
<p>首先,我在下面提供了一个函数,它生成一个随机的数据帧用于测试。重要的是,它创建了三个列来概括更抽象的问题:</p>
<ul>
<li><code>my_timestamp</code>是包含时间戳的<code>datetime</code>列</li>
<li><code>my_series</code>是要应用<code>groupby</code>的字符串标签</li>
<li><code>my_value</code>是在<code>my_timestamp</code>时间为<code>my_series</code>记录的数值</li>
</ul>
<p>用你拥有的数据帧替换任何列名称。在</p>
<pre><code>def generate_random_data(N=100):
'''
Returns a dataframe with N rows of random data.
'''
list_of_lists = []
labels = ['foo', 'bar', 'baz']
epoch = 1515617110
for _ in range(N):
key = random.choice(labels)
value = 0
if key == 'foo':
value = random.randint(1, 10)
elif key == 'bar':
value = random.randint(50, 60)
else:
value = random.randint(80, 90)
epoch += random.randint(5000, 30000)
row = [key, epoch, value]
list_of_lists.append(row)
df = pd.DataFrame(list_of_lists, columns=['my_series', 'epoch', 'my_value'])
df['my_timestamp'] = pd.to_datetime(df['epoch'], unit='s')
df = df[['my_timestamp', 'my_series', 'my_value']]
#df.set_index('ts', inplace=True)
return df
</code></pre>
<p>以下是生成的一些示例数据:</p>
<p><a href="https://i.stack.imgur.com/pT2wM.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/pT2wM.png" alt="enter image description here"/></a></p>
<p>现在,下面的代码将运行<code>groupby</code>并绘制一个很好的时间序列图。在</p>
^{pr2}$
<p>下面是一个调用示例:</p>
<pre><code>df = generate_random_data()
plot_gb_time_series(df, 'my_timestamp', 'my_series', 'my_value',
figsize=(10, 5), title="Random data")
</code></pre>
<p>下面是生成的时间序列图:</p>
<p><a href="https://i.stack.imgur.com/kkPY6.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/kkPY6.png" alt="enter image description here"/></a></p>