如何在matplotlib的不同子图中重复绘图?

时间:2019-01-13 20:59:27

标签: python matplotlib

我有

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 :(得分:3)

有些人更喜欢在Python中使用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]))

答案 1 :(得分:1)

这是使用列表推导方法执行此操作的一种方法,而不必显式编写四个单独的绘图命令。我将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