def __init__(self, ax: Axes, labels: iter, active: int = 0, activecolor: str = 'blue', size: int = 49, orientation: str = "vertical", **kwargs): """ Add radio buttons to an `~.axes.Axes`. Parameters ---------- ax : `~matplotlib.axes.Axes` The axes to add the buttons to. labels : list of str The button labels. active : int The index of the initially selected button. activecolor : color The color of the selected button. size : float Size of the radio buttons orientation : str The orientation of the buttons: 'vertical' (default), or 'horizontal'. Further parameters are passed on to `Legend`. """ AxesWidget.__init__(self, ax) self.activecolor = activecolor axcolor = ax.get_facecolor() self.value_selected = None ax.set_xticks([]) ax.set_yticks([]) ax.set_navigate(False) circles = [] for i, label in enumerate(labels): if i == active: self.value_selected = label facecolor = activecolor else: facecolor = axcolor p = ax.scatter([], [], s=size, marker="o", edgecolor='black', facecolor=facecolor) circles.append(p) if orientation == "horizontal": kwargs.update(ncol=len(labels), mode="expand") kwargs.setdefault("frameon", False) self.box = ax.legend(circles, labels, loc="center", **kwargs) self.labels = self.box.texts self.circles = self.box.legendHandles for c in self.circles: c.set_picker(5) self.cnt = 0 self.observers = {} self.connect_event('pick_event', self._clicked)