Почему я не могу использовать один и тот же набор данных в гистограмме matplotlib.pyplot после его использования в графике? - PullRequest
0 голосов
/ 08 июля 2019

Я проходил некоторые уроки по количественным финансам по Quantopia, когда столкнулся с проблемой при создании гистограммы. Первоначально я использовал свой набор данных X и нарисовал его на графике. График отображался в блокноте, но когда я попытался запустить последнюю строку в показанном коде, я получил ряд ошибок трассировки.

Мне удалось создать гистограмму, удалив строки кода, которые отображали X на графике, но я не понимаю, почему я не могу создать и график, и гистограмму. Меняется ли объект где-то по пути? Приношу свои извинения, если это что-то рудиментарное, я довольно новичок в кодировании, и это мой первый вопрос по Stack Exchange. Если это поможет, ноутбуки Quantopia находятся на Python 2.7. Спасибо, и хорошего дня.

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

data = get_pricing('MSFT', start_date='2012-1-1', end_date='2015-6-1')
X = data['price']
plt.plot(X.index, X.values)
plt.ylabel('Price')
plt.legend(['MSFT']);
R = X.pct_change()[1:]
plt.hist(R, bins = 20)

Вот ошибка:

ValueErrorTraceback (most recent call last)
/usr/local/lib/python2.7/dist-packages/IPython/core/formatters.pyc in __call__(self, obj)
    332                 pass
    333             else:
--> 334                 return printer(obj)
    335             # Finally look for special method names
    336             method = get_real_method(obj, self.print_method)

/usr/local/lib/python2.7/dist-packages/IPython/core/pylabtools.pyc in <lambda>(fig)
    245 
    246     if 'png' in formats:
--> 247         png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
    248     if 'retina' in formats or 'png2x' in formats:
    249         png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))

/usr/local/lib/python2.7/dist-packages/IPython/core/pylabtools.pyc in print_figure(fig, fmt, bbox_inches, **kwargs)
    129 
    130     bytes_io = BytesIO()
--> 131     fig.canvas.print_figure(bytes_io, **kw)
    132     data = bytes_io.getvalue()
    133     if fmt == 'svg':

/usr/local/lib/python2.7/dist-packages/matplotlib/backend_bases.pyc in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
   2178                     orientation=orientation,
   2179                     dryrun=True,
-> 2180                     **kwargs)
   2181                 renderer = self.figure._cachedRenderer
   2182                 bbox_inches = self.figure.get_tightbbox(renderer)

/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.pyc in print_png(self, filename_or_obj, *args, **kwargs)
    525 
    526     def print_png(self, filename_or_obj, *args, **kwargs):
--> 527         FigureCanvasAgg.draw(self)
    528         renderer = self.get_renderer()
    529         original_dpi = renderer.dpi

/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.pyc in draw(self)
    472 
    473         try:
--> 474             self.figure.draw(self.renderer)
    475         finally:
    476             RendererAgg.lock.release()

/usr/local/lib/python2.7/dist-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     59     def draw_wrapper(artist, renderer, *args, **kwargs):
     60         before(artist, renderer)
---> 61         draw(artist, renderer, *args, **kwargs)
     62         after(artist, renderer)
     63 

/usr/local/lib/python2.7/dist-packages/matplotlib/figure.pyc in draw(self, renderer)
   1157         dsu.sort(key=itemgetter(0))
   1158         for zorder, a, func, args in dsu:
-> 1159             func(*args)
   1160 
   1161         renderer.close_group('figure')

/usr/local/lib/python2.7/dist-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     59     def draw_wrapper(artist, renderer, *args, **kwargs):
     60         before(artist, renderer)
---> 61         draw(artist, renderer, *args, **kwargs)
     62         after(artist, renderer)
     63 

/usr/local/lib/python2.7/dist-packages/matplotlib/axes/_base.pyc in draw(self, renderer, inframe)
   2322 
   2323         for zorder, a in dsu:
-> 2324             a.draw(renderer)
   2325 
   2326         renderer.close_group('axes')

/usr/local/lib/python2.7/dist-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     59     def draw_wrapper(artist, renderer, *args, **kwargs):
     60         before(artist, renderer)
---> 61         draw(artist, renderer, *args, **kwargs)
     62         after(artist, renderer)
     63 

/usr/local/lib/python2.7/dist-packages/matplotlib/axis.pyc in draw(self, renderer, *args, **kwargs)
   1104         renderer.open_group(__name__)
   1105 
-> 1106         ticks_to_draw = self._update_ticks(renderer)
   1107         ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw,
   1108                                                                 renderer)

/usr/local/lib/python2.7/dist-packages/matplotlib/axis.pyc in _update_ticks(self, renderer)
    947 
    948         interval = self.get_view_interval()
--> 949         tick_tups = [t for t in self.iter_ticks()]
    950         if self._smart_bounds:
    951             # handle inverted limits

/usr/local/lib/python2.7/dist-packages/matplotlib/axis.pyc in iter_ticks(self)
    890         Iterate through all of the major and minor ticks.
    891         """
--> 892         majorLocs = self.major.locator()
    893         majorTicks = self.get_major_ticks(len(majorLocs))
    894         self.major.formatter.set_locs(majorLocs)

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in __call__(self)
   1004     def __call__(self):
   1005         'Return the locations of the ticks'
-> 1006         self.refresh()
   1007         return self._locator()
   1008 

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in refresh(self)
   1024     def refresh(self):
   1025         'Refresh internal information based on current limits.'
-> 1026         dmin, dmax = self.viewlim_to_dt()
   1027         self._locator = self.get_locator(dmin, dmax)
   1028 

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in viewlim_to_dt(self)
    768             vmin, vmax = vmax, vmin
    769 
--> 770         return num2date(vmin, self.tz), num2date(vmax, self.tz)
    771 
    772     def _get_unit(self):

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in num2date(x, tz)
    417         tz = _get_rc_timezone()
    418     if not cbook.iterable(x):
--> 419         return _from_ordinalf(x, tz)
    420     else:
    421         x = np.asarray(x)

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in _from_ordinalf(x, tz)
    269 
    270     ix = int(x)
--> 271     dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
    272 
    273     remainder = float(x) - ix

ValueError: ordinal must be >= 1

<matplotlib.figure.Figure at 0x7fdbbf910dd0>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...