Как отправить несколько графиков, сгенерированных Matplotlib в PPTX без каких-либо перекрытий? - PullRequest
1 голос
/ 22 января 2020

Я работаю над проектом, в котором я генерирую сотни графиков, используя модуль matplotlib в Python. Я хочу поместить эти графики в pptx, используя модуль python -pptx, скажем, четыре графика на слайде, не сохраняя эти графики на локальном диске. Чтобы преодолеть проблему хранения, я использую модуль BytesIO python, который сохраняет графики в буфере, а затем отправляет эти графики в pptx. Основная проблема, с которой я сталкиваюсь, - это наложение графиков.

Вопрос в том, как отправить эти графики последовательно в pptx, чтобы мы могли избежать наложения?

Снимок экрана сгенерированного pptx

result

Я добавил скриншот pptx, где я пытаюсь добавить два графика Plot 1 (Возраст против Имени), Сюжет 2 (Высота против Имени), но если вы видите Сюжет 2 , данные участка 1 и участка 2 перекрываются. Я хочу избежать этого наложения.

1 Ответ

1 голос
/ 22 января 2020

Вам нужно очистить оси между каждым графиком, есть несколько способов сделать это:

  • plt.clf(): очистить текущую фигуру
  • plt.cla(): очистить текущие оси

Таким образом, вместо, например,

plt.scatter(x, y1)
# save first plot
plt.scatter(x, y2)
# save second plot

Вы выполняете

plt.scatter(x, y1)
# save first plot
plt.clf()
plt.scatter(x, y2)
# save second plot

И два графика рассеяния будут нарисованы отдельно. Это, вероятно, самый «тупой» способ приблизиться к этому, но он должен работать довольно хорошо. Это ни в коем случае не лучший способ сделать это для любого конкретного случая c.

Эта цифра также очищается при вызове plt.show() - но я ожидаю, что в этом случае это нежелательно.

...