я имею
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")
без необходимости повторять линию для каждого сюжета. Есть способ сделать это?
Некоторые люди предпочитают использовать 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]))
Это один из способов сделать это, используя метод понимания списка без необходимости явного написания четырех отдельных команд построения. Я использую 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()
P
? Вы ищете объектP
, который позволил бы для данной команды?for ax in [ax1, ax2, ax3, ax4]: ax.plot(...)