Source code for sciplot.data.bars

# -*- coding: utf-8 -*-
"""
Created on Thu Jul  7 10:30:28 2016

@author: chc
"""

from sciplot.data.generic import Data as _Data
import matplotlib as _mpl


[docs]class BarStyle: """ Style information for each data plotted (bar) """ def __init__(self): self._setupBarStyle()
[docs] def _setupBarStyle(self): self.style_dict = {'facecolor': None, 'alpha': None, 'edgecolor': None, 'linewidth': None, 'width_factor': None}
[docs] def retrieve_style_from_bar(self, bar): """ Take an MPL bar object and retrieve appropriate attributes """ # facecolor facecolor = bar.get_facecolor()[:-1] if isinstance(facecolor, str): # facecolor = _mpl.colors.ColorConverter.cache[facecolor] facecolor = _mpl.colors.ColorConverter().to_rgb(facecolor) if isinstance(facecolor, tuple): facecolor = list(facecolor) self.style_dict['facecolor'] = facecolor # Alpha (transparency) alpha = bar.get_alpha() if alpha is None: alpha = 1 self.style_dict['alpha'] = alpha # edgecolor edgecolor = bar.get_edgecolor()[:-1] if isinstance(edgecolor, str): # edgecolor = _mpl.colors.ColorConverter.cache[edgecolor] edgecolor = _mpl.colors.ColorConverter().to_rgb(edgecolor) if isinstance(edgecolor, tuple): edgecolor = list(edgecolor) self.style_dict['edgecolor'] = edgecolor # Linewidth self.style_dict['linewidth'] = bar.get_linewidth()
[docs]class DataBar(_Data, BarStyle): def __init__(self): self._width = None self._left = None self._gap = None self._bottom = None self._setupData() self._setupBarStyle() @property def model_style(self): out = {} out.update(self.style_dict) out['label'] = self.label out['id'] = self.id out['meta'] = self.meta return out @model_style.setter def model_style(self, value): self.label = value['label'] self.meta = value['meta'] self.style_dict['facecolor'] = value['facecolor'] self.style_dict['alpha'] = value['alpha'] self.style_dict['edgecolor'] = value['edgecolor'] self.style_dict['linewidth'] = value['linewidth'] self.style_dict['width_factor'] = value['width_factor'] if self._gap is not None: self._width = self._gap*self.style_dict['width_factor'] else: self._width = self.style_dict['width_factor'] self._left = self.x - self._width/2