def getReference(element: Artist, allow_using_variable_names=True): """ get the code string that represents the given Artist. """ if element is None: return "" if isinstance(element, Figure): if allow_using_variable_names: name = getattr(element, "_variable_name", None) if name is not None: return name if isinstance(element.number, (float, int)): return "plt.figure(%s)" % element.number else: return "plt.figure(\"%s\")" % element.number if isinstance(element, matplotlib.lines.Line2D): index = element.axes.lines.index(element) return getReference(element.axes) + ".lines[%d]" % index if isinstance(element, matplotlib.collections.Collection): index = element.axes.collections.index(element) return getReference(element.axes) + ".collections[%d]" % index if isinstance(element, matplotlib.patches.Patch): if element.axes: index = element.axes.patches.index(element) return getReference(element.axes) + ".patches[%d]" % index index = element.figure.patches.index(element) return getReference(element.figure) + ".patches[%d]" % (index) if isinstance(element, matplotlib.text.Text): if element.axes: try: index = element.axes.texts.index(element) except ValueError: for attribute_name in ["title", "_left_title", "_right_title"]: if getattr(element.axes, attribute_name, None) == element: return getReference(element.axes) + "." + attribute_name pass else: return getReference(element.axes) + ".texts[%d]" % index try: index = element.figure.texts.index(element) return getReference(element.figure) + ".texts[%d]" % (index) except ValueError: pass for axes in element.figure.axes: if element == axes.get_xaxis().get_label(): return getReference(axes) + ".get_xaxis().get_label()" if element == axes.get_yaxis().get_label(): return getReference(axes) + ".get_yaxis().get_label()" for index, label in enumerate(axes.get_xaxis().get_major_ticks()): if element == label.label1: return getReference(axes) + ".get_xaxis().get_major_ticks()[%d].label1" % index if element == label.label2: return getReference(axes) + ".get_xaxis().get_major_ticks()[%d].label2" % index for index, label in enumerate(axes.get_xaxis().get_minor_ticks()): if element == label.label1: return getReference(axes) + ".get_xaxis().get_minor_ticks()[%d].label1" % index if element == label.label2: return getReference(axes) + ".get_xaxis().get_minor_ticks()[%d].label2" % index for axes in element.figure.axes: for index, label in enumerate(axes.get_yaxis().get_major_ticks()): if element == label.label1: return getReference(axes) + ".get_yaxis().get_major_ticks()[%d].label1" % index if element == label.label2: return getReference(axes) + ".get_yaxis().get_major_ticks()[%d].label2" % index for index, label in enumerate(axes.get_yaxis().get_minor_ticks()): if element == label.label1: return getReference(axes) + ".get_yaxis().get_minor_ticks()[%d].label1" % index if element == label.label2: return getReference(axes) + ".get_yaxis().get_minor_ticks()[%d].label2" % index if isinstance(element, matplotlib.axes._axes.Axes): if element.get_label(): return getReference(element.figure) + ".ax_dict[\"%s\"]" % element.get_label() return getReference(element.figure) + ".axes[%d]" % element.number if isinstance(element, matplotlib.legend.Legend): return getReference(element.axes) + ".get_legend()" raise TypeError(str(type(element)) + " not found")