-1

我正在尝试在 pandas 中制作时间序列数据的条形图。

文档说这是不可能的: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='bar'

我得到:

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

1 回答 1

2

您可以绘制时间序列的条形图。恕我直言,这不是很有用。

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

时间序列线图

在此处输入图像描述

条形图

在此处输入图像描述

于 2013-06-29T13:59:47.993 回答