У меня есть проект, в котором я рисую и сохраняю рисунки с помощью matplotlib. Поскольку сам проект работал отлично, я недавно начал рефакторинг, но есть одна проблема, для которой я пока не нашел хорошего решения. Чтобы разделить реализацию и ведение журнала, я написал класс ведения журнала, который передает данные классу построения, и тут у меня возникла проблема: до выполнения я не знаю, сколько подграфиков будет существовать в одном графике/рисунке журнала.
Итак, перед рефакторингом у меня было много различных функций построения графиков и множество операторов if. Теперь я хочу передать все это моему классу построения графиков... но на данный момент я не очень хорошо представляю, как класс построения графиков должен обрабатывать эти данные.
Раньше у меня было что-то вроде этого (здесь: для 4 сюжетных линий):
f, axarr = plt.subplots(2, 2)
axarr[0, 0].set_title("original image")
axarr[0, 0].imshow(oimg, interpolation="none", cmap="gray")
axarr[0, 1].set_title("cost data")
axarr[0, 1].plot(cost_data, ...)
(...)
Конечно, я мог бы создать около 6 различных методов, подобных этому, в моем классе построения графиков для 1, 2, 3, ... подграфиков, но тогда у меня снова будет повторение.
Могу ли я как-то создать буфер и динамически добавить подзаголовок в цикл или что-то в этом роде?
Любые другие идеи?
Axes
объект + данные в качестве входных данных. Относительно легко писать циклы for по подсюжетам + ваш список данных. - person tacaswell   schedule 21.02.2016plt.subplots(2, 2)
вручную с фиксированным размером везде, где я хочу отображать данные?! - person daniel451   schedule 21.02.2016Axes
, и одну функцию диспетчера, которая принимает ваши данные + параметры + конфигурацию + что угодно, создает фигуру + оси, а затем отправляет их ранее упомянутым функциям. Таким образом, вы получите максимальное повторное использование кода (и удобочитаемость!). - person tacaswell   schedule 21.02.2016Axes
объектов, но нет встроенных инструментов. - person tacaswell   schedule 21.02.2016