代码之家  ›  专栏  ›  技术社区  ›  Dervin Thunk

如何在Matplotlib的不同子批次中重复绘图?

  •  1
  • Dervin Thunk  · 技术社区  · 6 年前

    我有

    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 回复  |  直到 6 年前
        1
  •  3
  •   ImportanceOfBeingErnest    6 年前

    有些人喜欢用 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]))
    
        2
  •  1
  •   Sheldore    6 年前

    这是一种不用编写四个单独的绘图命令就可以使用列表理解方法来完成此操作的方法。 明确地 . 我将数据帧用作 p 与你的问题保持一致。你可以试着更换 df 与你 变量。

    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