Предположим, что я использую стороннюю функцию magic_plot(data, ax)
, которая добавляет коллекцию патчей к осям на основе предоставленных данных. Далее предположим, что я хочу изменить цвет определенного патча, который был добавлен. Как я могу это сделать?
from numpy.random import rand
from matplotlib.collections import PatchCollection
from matplotlib.patches import Circle
import matplotlib.pyplot as plt
def magic_plot(data, ax):
"""
A third-party plotting function, not modifiable by end-users.
"""
lst = []
for i in range(10):
patch = Circle((rand(), rand()), rand())
lst.append(patch)
collection = PatchCollection(lst)
ax.add_collection(collection)
ax = plt.gca()
data = rand(100)
# create the plot:
magic_plot(data, ax)
# obtain the PatchCollection created by magic_plot():
collection = ax.collections[0]
Как показано выше, я могу извлечь коллекцию из осей из ax.collections
, но как мне продолжить отсюда?
Я предполагаю, что мне нужен доступ к списку патчей, которые хранятся в этом PatchCollection
объекте. Однако в ответе на аналогичный вопрос "matplotlib change a Patch in PatchCollection" было предложено использовать подкласс PatchCollection
, который отслеживает патчи, добавленные к нему в атрибуте открытого списка , но с учетом того, что коллекция создается в сторонней функции, это решение не подходит в моем случае.