def _x_axis(self, draw_axes=True): if not self._x_labels: return axis = self.svg.node(self.nodes['plot'], class_="axis x web") format_ = lambda x: '%f %f' % x center = self.view((0, 0)) r = self._rmax for label, theta in self._x_labels: guides = self.svg.node(axis, class_='guides') end = self.view((r, theta)) self.svg.node( guides, 'path', d='M%s L%s' % (format_(center), format_(end)), class_='line') r_txt = (1 - self._box.__class__.margin) * self._box.ymax pos_text = self.view((r_txt, theta)) text = self.svg.node( guides, 'text', x=pos_text[0], y=pos_text[1]) text.text = label angle = - theta + pi / 2 if cos(angle) < 0: angle -= pi text.attrib['transform'] = 'rotate(%f %s)' % ( deg(angle), format_(pos_text))
def _x_axis(self, draw_axes=True): """Override x axis to make it polar""" if not self._x_labels or not self.show_x_labels: return axis = self.svg.node(self.nodes['plot'], class_="axis x web%s" % (' always_show' if self.show_x_guides else '')) format_ = lambda x: '%f %f' % x center = self.view((0, 0)) r = self._rmax truncation = self.truncate_label if not truncation: if self.x_label_rotation or len(self._x_labels) <= 1: truncation = 25 else: first_label_position = self.view.x(self._x_labels[0][1]) or 0 last_label_position = self.view.x(self._x_labels[-1][1]) or 0 available_space = (last_label_position - first_label_position ) / (len(self._x_labels) - 1) truncation = reverse_text_len(available_space, self.style.label_font_size) truncation = max(truncation, 1) for label, theta in self._x_labels: major = label in self._x_major_labels if not (self.show_minor_x_labels or major): continue guides = self.svg.node(axis, class_='guides') end = self.view((r, theta)) self.svg.node( guides, 'path', d='M%s L%s' % (format_(center), format_(end)), class_='%s%sline' % ('axis ' if label == "0" else '', 'major ' if major else '')) r_txt = (1 - self._box.__class__.margin) * self._box.ymax pos_text = self.view((r_txt, theta)) text = self.svg.node(guides, 'text', x=pos_text[0], y=pos_text[1], class_='major' if major else '') text.text = truncate(label, truncation) if text.text != label: self.svg.node(guides, 'title').text = label else: self.svg.node( guides, 'title', ).text = self._x_format(theta) angle = -theta + pi / 2 if cos(angle) < 0: angle -= pi text.attrib['transform'] = 'rotate(%f %s)' % ( self.x_label_rotation or deg(angle), format_(pos_text))
def _x_axis(self, draw_axes=True): """Override x axis to make it polar""" if not self._x_labels or not self.show_x_labels: return axis = self.svg.node( self.nodes['plot'], class_="axis x web%s" % (' always_show' if self.show_x_guides else '') ) format_ = lambda x: '%f %f' % x center = self.view((0, 0)) r = self._rmax # Can't simply determine truncation truncation = self.truncate_label or 25 for label, theta in self._x_labels: major = label in self._x_labels_major if not (self.show_minor_x_labels or major): continue guides = self.svg.node(axis, class_='guides') end = self.view((r, theta)) self.svg.node( guides, 'path', d='M%s L%s' % (format_(center), format_(end)), class_='%s%sline' % ('axis ' if label == "0" else '', 'major ' if major else '') ) r_txt = (1 - self._box.__class__.margin) * self._box.ymax pos_text = self.view((r_txt, theta)) text = self.svg.node( guides, 'text', x=pos_text[0], y=pos_text[1], class_='major' if major else '' ) text.text = truncate(label, truncation) if text.text != label: self.svg.node(guides, 'title').text = label else: self.svg.node( guides, 'title', ).text = self._x_format(theta) angle = -theta + pi / 2 if cos(angle) < 0: angle -= pi text.attrib['transform'] = 'rotate(%f %s)' % ( self.x_label_rotation or deg(angle), format_(pos_text) )
def _x_axis(self, draw_axes=True): if not self._x_labels: return axis = self.svg.node(self.nodes['plot'], class_="axis x web") format_ = lambda x: '%f %f' % x center = self.view((0, 0)) r = self._rmax if self.x_labels_major: x_labels_major = self.x_labels_major elif self.x_labels_major_every: x_labels_major = [ self._x_labels[i][0] for i in range(0, len(self._x_labels), self.x_labels_major_every) ] elif self.x_labels_major_count: label_count = len(self._x_labels) major_count = self.x_labels_major_count if (major_count >= label_count): x_labels_major = [label[0] for label in self._x_labels] else: x_labels_major = [ self._x_labels[int(i * label_count / major_count)][0] for i in range(major_count) ] else: x_labels_major = [] for label, theta in self._x_labels: major = label in x_labels_major if not (self.show_minor_x_labels or major): continue guides = self.svg.node(axis, class_='guides') end = self.view((r, theta)) self.svg.node(guides, 'path', d='M%s L%s' % (format_(center), format_(end)), class_='%sline' % ('major ' if major else '')) r_txt = (1 - self._box.__class__.margin) * self._box.ymax pos_text = self.view((r_txt, theta)) text = self.svg.node(guides, 'text', x=pos_text[0], y=pos_text[1], class_='major' if major else '') text.text = label angle = -theta + pi / 2 if cos(angle) < 0: angle -= pi text.attrib['transform'] = 'rotate(%f %s)' % (deg(angle), format_(pos_text))
def _x_axis(self, draw_axes=True): """Override x axis to make it polar""" if not self._x_labels: return axis = self.svg.node(self.nodes['plot'], class_="axis x web") format_ = lambda x: '%f %f' % x center = self.view((0, 0)) r = self._rmax if self.x_labels_major: x_labels_major = self.x_labels_major elif self.x_labels_major_every: x_labels_major = [self._x_labels[i][0] for i in range( 0, len(self._x_labels), self.x_labels_major_every)] elif self.x_labels_major_count: label_count = len(self._x_labels) major_count = self.x_labels_major_count if (major_count >= label_count): x_labels_major = [label[0] for label in self._x_labels] else: x_labels_major = [self._x_labels[ int(i * label_count / major_count)][0] for i in range(major_count)] else: x_labels_major = [] for label, theta in self._x_labels: major = label in x_labels_major if not (self.show_minor_x_labels or major): continue guides = self.svg.node(axis, class_='guides') end = self.view((r, theta)) self.svg.node( guides, 'path', d='M%s L%s' % (format_(center), format_(end)), class_='%sline' % ('major ' if major else '')) r_txt = (1 - self._box.__class__.margin) * self._box.ymax pos_text = self.view((r_txt, theta)) text = self.svg.node( guides, 'text', x=pos_text[0], y=pos_text[1], class_='major' if major else '') text.text = label angle = - theta + pi / 2 if cos(angle) < 0: angle -= pi text.attrib['transform'] = 'rotate(%f %s)' % ( deg(angle), format_(pos_text))
def _x_axis(self, draw_axes=True): if not self._x_labels: return axis = self.svg.node(self.nodes["plot"], class_="axis x web") format_ = lambda x: "%f %f" % x center = self.view((0, 0)) r = self._rmax if self.x_labels_major: x_labels_major = self.x_labels_major elif self.x_labels_major_every: x_labels_major = [self._x_labels[i][0] for i in xrange(0, len(self._x_labels), self.x_labels_major_every)] elif self.x_labels_major_count: label_count = len(self._x_labels) major_count = self.x_labels_major_count if major_count >= label_count: x_labels_major = [label[0] for label in self._x_labels] else: x_labels_major = [self._x_labels[int(i * label_count / major_count)][0] for i in xrange(major_count)] else: x_labels_major = [] for label, theta in self._x_labels: major = label in x_labels_major if not (self.show_minor_x_labels or major): continue guides = self.svg.node(axis, class_="guides") end = self.view((r, theta)) self.svg.node( guides, "path", d="M%s L%s" % (format_(center), format_(end)), class_="%sline" % ("major " if major else ""), ) r_txt = (1 - self._box.__class__.margin) * self._box.ymax pos_text = self.view((r_txt, theta)) text = self.svg.node(guides, "text", x=pos_text[0], y=pos_text[1], class_="major" if major else "") text.text = label angle = -theta + pi / 2 if cos(angle) < 0: angle -= pi text.attrib["transform"] = "rotate(%f %s)" % (deg(angle), format_(pos_text))
def _x_axis(self, draw_axes=True): if not self._x_labels: return axis = self.svg.node(self.nodes["plot"], class_="axis x web") format_ = lambda x: "%f %f" % x center = self.view((0, 0)) r = self._rmax for label, theta in self._x_labels: guides = self.svg.node(axis, class_="guides") end = self.view((r, theta)) self.svg.node(guides, "path", d="M%s L%s" % (format_(center), format_(end)), class_="line") r_txt = (1 - self._box.__class__.margin) * self._box.ymax pos_text = self.view((r_txt, theta)) text = self.svg.node(guides, "text", x=pos_text[0], y=pos_text[1]) text.text = label angle = -theta + pi / 2 if cos(angle) < 0: angle -= pi text.attrib["transform"] = "rotate(%f %s)" % (deg(angle), format_(pos_text))
def _x_axis(self, draw_axes=True): """Override x axis to make it polar""" if not self._x_labels or not self.show_x_labels: return axis = self.svg.node(self.nodes["plot"], class_="axis x web%s" % (" always_show" if self.show_x_guides else "")) format_ = lambda x: "%f %f" % x center = self.view((0, 0)) r = self._rmax # Can't simply determine truncation truncation = self.truncate_label or 25 for label, theta in self._x_labels: major = label in self._x_labels_major if not (self.show_minor_x_labels or major): continue guides = self.svg.node(axis, class_="guides") end = self.view((r, theta)) self.svg.node( guides, "path", d="M%s L%s" % (format_(center), format_(end)), class_="%s%sline" % ("axis " if label == "0" else "", "major " if major else ""), ) r_txt = (1 - self._box.__class__.margin) * self._box.ymax pos_text = self.view((r_txt, theta)) text = self.svg.node(guides, "text", x=pos_text[0], y=pos_text[1], class_="major" if major else "") text.text = truncate(label, truncation) if text.text != label: self.svg.node(guides, "title").text = label else: self.svg.node(guides, "title").text = self._x_format(theta) angle = -theta + pi / 2 if cos(angle) < 0: angle -= pi text.attrib["transform"] = "rotate(%f %s)" % (self.x_label_rotation or deg(angle), format_(pos_text))