Как повторить сюжет в разных сюжетах в matplotlib? - PullRequest
0 голосов
/ 13 января 2019

у меня

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")

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

Ответы [ 2 ]

0 голосов
/ 14 января 2019

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

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

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

list(map(lambda ax: geodf.plot(ax=ax), [ax1, ax2, ax3, ax4]))
0 голосов
/ 14 января 2019

Это один из способов сделать это, используя метод понимания списка без необходимости писать четыре отдельных команды построения явно . Я использую 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()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...