2013-06-29 3 views
-1

Я пытаюсь сделать гистограмму в пандах по данным временных рядов.Гистограмма в пандах по данным временных рядов

Документация говорит, что это невозможно: http://pandas.pydata.org/pandas-docs/stable/visualization.html#bar-plots

Есть ли обходной путь?

Это мой код

# there must be ORDER BY, other wise rows will not be ordered 
df = sql.read_frame("SELECT * FROM hzmo_report ORDER BY datum;", cnx, index_col='datum') 

df.index = pd.to_datetime(df.index) # converting to DatetimeIndex 

df['korisnika'].plot(ax=axs1[0], title='SOMETHING', marker='o') 
df['korisnika'].diff().plot(ax=axs1[1], title='SOMETHING', marker='o') # i would like this to be bar plot 

Если я

df['korisnika'].diff().plot(kind='bar', ax=axs1[1], title='SOMETHING', marker='o') 

Я просто добавил Kind = 'бар'

я получаю:

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-109-d41eb2b2e3a7> in <module>() 
    36 fig1.suptitle('Umirovljenici', fontsize=16) 
    37 df['korisnika'].plot(ax=axs1[0], title='Broj korisnika mirovine', marker='o') 
---> 38 (df['korisnika'].diff()).plot(ax=axs1[1], kind='bar', title='Apsolutna razlika naspram prethodnog mjeseca', marker='o') 
    39 #df['korisnika'].diff().hist() 
    40 

C:\Documents and Settings\hr1ub098\Application Data\Python\Python27\site-packages\pandas\tools\plotting.pyc in plot_series(series, label, kind, use_index, rot, xticks, yticks, xlim, ylim, ax, style, grid, legend, logy, secondary_y, **kwds) 
    1504      secondary_y=secondary_y, **kwds) 
    1505 
-> 1506  plot_obj.generate() 
    1507  plot_obj.draw() 
    1508 

C:\Documents and Settings\hr1ub098\Application Data\Python\Python27\site-packages\pandas\tools\plotting.pyc in generate(self) 
    731   self._compute_plot_data() 
    732   self._setup_subplots() 
--> 733   self._make_plot() 
    734   self._post_plot_logic() 
    735   self._adorn_subplots() 

C:\Documents and Settings\hr1ub098\Application Data\Python\Python27\site-packages\pandas\tools\plotting.pyc in _make_plot(self) 
    1291    else: 
    1292     rect = bar_f(ax, self.ax_pos + i * 0.75/K, y, 0.75/K, 
-> 1293        start=pos_prior, label=label, **kwds) 
    1294    rects.append(rect) 
    1295    labels.append(label) 

C:\Documents and Settings\hr1ub098\Application Data\Python\Python27\site-packages\pandas\tools\plotting.pyc in f(ax, x, y, w, start, **kwds) 
    1251   if self.kind == 'bar': 
    1252    def f(ax, x, y, w, start=None, **kwds): 
-> 1253     return ax.bar(x, y, w, bottom=start, **kwds) 
    1254   elif self.kind == 'barh': 
    1255    def f(ax, x, y, w, start=None, **kwds): 

C:\Documents and Settings\hr1ub098\Application Data\Python\Python27\site-packages\matplotlib\axes.pyc in bar(self, left, height, width, bottom, **kwargs) 
    4779     label='_nolegend_' 
    4780    ) 
-> 4781    r.update(kwargs) 
    4782    r.get_path()._interpolation_steps = 100 
    4783    #print r.get_label(), label, 'label' in kwargs 

C:\Documents and Settings\hr1ub098\Application Data\Python\Python27\site-packages\matplotlib\artist.pyc in update(self, props) 
    657    func = getattr(self, 'set_'+k, None) 
    658    if func is None or not callable(func): 
--> 659     raise AttributeError('Unknown property %s'%k) 
    660    func(v) 
    661    changed = True 

AttributeError: Unknown property marker 
+0

Почему вы не верите в документации? – duffymo

+0

Это не значит, что я не верю документации. Мой вопрос - как это сделать, потому что kind = 'bar' не будет делать. – WebOrCode

+0

Временные ряды являются непрерывными по времени, гистограммы представляют собой дискретные бункеры. Возможно, вам просто нужно определить бункеры, выяснить, какое значение присвоить (среднее?), А затем «bar». – duffymo

ответ

2

Вы можете постройте график штрихов временного ряда. Не то, чтобы полезно ИМХО.

ts = Series(randn(20),date_range('20130101',periods=20)) 
ts.plot() 

Временной ряд линейный участок

enter image description here

бар Участок

enter image description here

+0

Ваш пример работает. Я обновил свой пример кода. Насколько я вижу, он работает не так, как я привел в качестве примера. В этом моем коде он работает нормально: df ['korisnika']. Diff(). Plot (kind = 'bar', title = 'Verizni indeksi') Мне нужен штрих-график, потому что я использую его на diff(), поэтому bar дает более точную визуализацию изменений в предыдущий период. – WebOrCode

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