2017-05-21 40 views
0

我試圖用matplotlib.pyplot繪製季度時間序列收入數據,但不斷收到錯誤。以下是我的代碼和錯誤所需的行爲是使用matplotlib按季度繪製收入數據。當我嘗試這樣做,我得到:matplotlib pyplot中的繪圖期系列

TypeError: Axis must have頻率set to convert to Periods

是因爲表現爲週期時間序列日期不能在matplotlib繪製?以下是我的代碼。

def parser(x): 
    return pd.to_datetime(x, format='%m%Y') 
tot = pd.read_table('C:/Desktop/data.txt', parse_dates=[2], index_col=[2], date_parser=parser) 

tot = tot.dropna() 
tot = tot.to_period('Q').reset_index().groupby(['origin', 'date'], as_index=False).agg(sum) 

tot.head() 
origin date rev 
0 KY 2016Q2 1783.16 
1 TN 2014Q1 32128.36 
2 TN 2014Q2 16801.40 
3 TN 2014Q3 33863.39 
4 KY 2014Q4 103973.66 

plt.plot(tot.date, tot.rev) 
+0

問題尋求幫助調試(「爲什麼不是這個代碼的工作?」)必須包括所期望的行爲,一個特定的問題或錯誤,並重現它在問題本身所需要的最短的代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建[mcve]。 – ImportanceOfBeingErnest

+0

我已添加其他上下文 – oammon

回答

0

這似乎是錯誤。

對我的作品DataFrame.plot

ooc.plot(x='date', y='rev') 
+0

您正在使用熊貓來繪製它。我發佈的版本是一個簡化的版本,但我試圖瞭解是否有一種方法來繪製它與matplotlib。 – oammon

0

如果你想使用matplotlib,下面的代碼應該給你想要的情節:

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

df = pd.DataFrame({'origin': ['KY','TN','TN','TN','KY'], 
        'date': ['2016Q2','2014Q1','2014Q2','2014Q3','2014Q4'], 
         'rev': [1783.16, 32128.36, 16801.40, 33863.39, 103973.66]}) 
x = np.arange(0,len(df),1) 
fig, ax = plt.subplots(1,1) 
ax.plot(x,df['rev']) 
ax.set_xticks(x) 
ax.set_xticklabels(df['date']) 
plt.show() 

enter image description here

您可以使用xticks命令並用以下代碼的條形圖表示數據:

plt.bar(range(len(df.rev)), df.rev, align='center') 
plt.xticks(range(len(df.rev)), df.date, size='small') 

enter image description here

+0

@oammon這是否回答你的問題? –