+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何使用预写的库函数将其绘制到子图中?

发布于2021-03-02 15:22     阅读(937)     评论(0)     点赞(24)     收藏(3)


0

1

2

3

4

5

6

7

我已经在这个问题上徘徊了一段时间,但是今天我真的很想弄清楚是否可以解决这个问题。

假设您有一个库中的函数可以进行一些绘图,例如:

def plotting_function():
    fig, ax = plt.subplots()
    ax.plot([1,2,3], [2,4,10])
    return fig

如果我想多次将此单个图添加到自己的子图中,我该怎么做?

我无法更改plotting_function,因为它来自库,所以我尝试了以下方法:

fig, axs = plt.subplots(1,3)
for i in range(3):
    plt.sca(axs[i])
    plotting_function()
plt.show()

这将产生一个空的子图,折线图会分开绘制。

对这个问题有简单的答案吗?提前致谢。


解决方案


我认为使用猴子补丁可能会更好plt.subplots(),但是可以将子图从一个图形移动到另一个图形。这是一个基于此帖子的示例

import matplotlib.pyplot as plt
from matplotlib.transforms import Bbox


def plotting_function1():
    fig, ax = plt.subplots()
    ax.plot([1,2,3], [2,4,10])
    return fig

def plotting_function2():
    fig, ax = plt.subplots()
    ax.plot([10,20,30], [20,40,100])
    return fig

def main():
    f1 = plotting_function1()
    ax1 = plt.gca()
    ax1.remove()

    f2 = plotting_function2()
    ax2 = plt.gca()
    ax1.figure = f2
    f2.axes.append(ax1)
    f2.add_axes(ax1)

    # These positions are copied from a call to subplots().
    ax1.set_position(Bbox([[0.125, 0.11], [0.477, 0.88]]))
    ax2.set_position(Bbox([[0.55, 0.11], [0.9, 0.88]]))
    plt.show()

main()

0

1

2

3

4



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/869851/ee997436546331b5f68f/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

24 0
收藏该文
已收藏

评论内容:(最多支持255个字符)