Как повторить сюжет в разных сюжетах в matplotlib?

1

я имею

fig, (((ax1, ax2), (ax3, ax4))) = plt.subplots(ncols=2, nrows=2, 
                                               sharex='col', 
                                               sharey='row', 
                                               figsize=(12, 12))

и я хочу повторить один сюжет, скажем P по всем осям, что-то вроде:

P.plot(ax = [ax1, ax2, ax3, ax4], facecolor = "none",
       edgecolor = "black")

без необходимости повторять линию для каждого сюжета. Есть способ сделать это?

  • 0
    что такое P ? Вы ищете объект P , который позволил бы для данной команды?
  • 0
    По какой причине вы не можете использовать цикл for? for ax in [ax1, ax2, ax3, ax4]: ax.plot(...)
Показать ещё 2 комментария
Теги:
matplotlib

2 ответа

1

Некоторые люди предпочитают использовать map вместо for в питоне. Так что я полагаю, если цель состоит в том, чтобы заменить какой-то канонический цикл, такой как

for ax in [ax1, ax2, ax3, ax4]:
    geodf.plot(ax=ax)

ты мог бы сделать

list(map(lambda ax: geodf.plot(ax=ax), [ax1, ax2, ax3, ax4]))
  • 0
    Вот ответ от меня за лямбда-выражение +1
0

Это один из способов сделать это, используя метод понимания списка без необходимости явного написания четырех отдельных команд построения. Я использую DataFrame как p чтобы соответствовать вашей проблеме. Вы можете попробовать заменить df переменной p.

import pandas as pd
import matplotlib.pyplot as plt

fig, (((ax1, ax2), (ax3, ax4))) = plt.subplots(ncols=2, nrows=2, 
                                               sharex='col', 
                                               sharey='row', 
                                               figsize=(8, 8))

df = pd.DataFrame({"x": [1, 2, 3, 4],
                   "y" : [1, 4, 9, 16]})

_ = [df.plot(x="x", y="y", ax=ax) for ax in [ax1, ax2, ax3, ax4]]
plt.show()

Изображение 174551

  • 0
    Почему отрицательный голос?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню