Можно ли использовать LabelSet на Heatmap, созданной с прямоугольными объектами (аналогично примеруоциантуру занятости)? - PullRequest
1 голос
/ 10 мая 2019

Я использую Bokeh в ноутбуке Python 3 Jupyter, чтобы создать простую тепловую карту. В качестве основы для своей работы я использовал пример неработоспособность.py (из https://bokeh.pydata.org/en/latest/docs/gallery/unemployment.html). Я довольно плохо знаком с Python и Bokeh, но у меня возникают проблемы с работой LabelSet, поскольку я использую категориальные данные на обоих Ось X и Y. Похоже, что он предназначен для использования координат ху

Я пытался использовать категориальные данные в качестве x и y для LabelSet, но получаю сообщение об ошибке. Я не уверен, куда идти отсюда.

Я использую раздел «Этикетки» https://bokeh.pydata.org/en/latest/docs/user_guide/annotations.html, чтобы направлять меня.

labels = LabelSet(x='AppointmentDate', y='BookingMasterPage', text='EventCount', level='glyph', x_offset=0, y_offset=0, source=df, render_mode='canvas')

AppointmentDate и BookingMasterPage являются категориальными данными. Я хочу, чтобы EventCount отображался в каждом прямоугольнике. Приведенный выше код в результате выдает следующую ошибку:

ValueError                                Traceback (most recent call last)
<ipython-input-20-44d66cdb039c> in <module>
     47 
     48 labels = LabelSet(x='AppointmentDate', y='BookingMasterPage', text='EventCount', level='glyph',
---> 49               x_offset=0, y_offset=0, source=df, render_mode='canvas')
     50 
     51 color_bar = ColorBar(color_mapper=mapper, major_label_text_font_size="8pt",

~\Anaconda3\lib\site-packages\bokeh\model.py in __init__(self, **kwargs)
    259         self._document = None
    260         self._temp_document = None
--> 261         super(Model, self).__init__(**kwargs)
    262         default_theme.apply_to_model(self)
    263 

~\Anaconda3\lib\site-packages\bokeh\core\has_props.py in __init__(self, **properties)
    251 
    252         for name, value in properties.items():
--> 253             setattr(self, name, value)
    254 
    255     def __setattr__(self, name, value):

~\Anaconda3\lib\site-packages\bokeh\core\has_props.py in __setattr__(self, name, value)
    278 
    279         if name in props or (descriptor is not None and descriptor.fset is not None):
--> 280             super(HasProps, self).__setattr__(name, value)
    281         else:
    282             matches, text = difflib.get_close_matches(name.lower(), props), "similar"

~\Anaconda3\lib\site-packages\bokeh\core\property\descriptors.py in __set__(self, obj, value, setter)
    543             raise RuntimeError("%s.%s is a readonly property" % (obj.__class__.__name__, self.name))
    544 
--> 545         self._internal_set(obj, value, setter=setter)
    546 
    547     def __delete__(self, obj):

~\Anaconda3\lib\site-packages\bokeh\core\property\descriptors.py in _internal_set(self, obj, value, hint, setter)
    764 
    765         '''
--> 766         value = self.property.prepare_value(obj, self.name, value)
    767 
    768         old = self.__get__(obj, obj.__class__)

~\Anaconda3\lib\site-packages\bokeh\core\property\bases.py in prepare_value(self, obj_or_cls, name, value)
    325                     break
    326             else:
--> 327                 raise e
    328         else:
    329             value = self.transform(value)

~\Anaconda3\lib\site-packages\bokeh\core\property\bases.py in prepare_value(self, obj_or_cls, name, value)
    318         try:
    319             if validation_on():
--> 320                 self.validate(value)
    321         except ValueError as e:
    322             for tp, converter in self.alternatives:

~\Anaconda3\lib\site-packages\bokeh\core\property\instance.py in validate(self, value, detail)
    112             if not isinstance(value, self.instance_type):
    113                 msg = "" if not detail else "expected an instance of type %s, got %s of type %s" % (self.instance_type.__name__, value, type(value).__name__)
--> 114                 raise ValueError(msg)
    115 
    116     def _may_have_unstable_default(self):

ValueError: expected an instance of type DataSource, got    AppointmentDate          BookingMasterPage  EventCount
...