绘制图形数组 Mathplotlib

问题描述 投票:0回答:1

我有一个创建图形的函数,现在我想在具有不同参数的循环内重复调用该函数,收集图形并绘制它们。 这就是我在朱莉娅中所做的:

using Plots

plots = Array{Plots.Plot{Plots.GRBackend},2}(undef, 3,3)

for i in 1:3
    for j in 1:3
        plots[i,j] = scatter(rand(10), rand(10))
        title!(plots[i,j], "Plot $(i),$(j)")
    end
end

plot(plots..., layout=(3,3))

但是我必须写python。所以目前我有一个函数可以创建一个新图形并返回它。我不愿意改变这个函数调用签名(例如传递一些轴对象),因为它已经在不同的上下文中使用了。这是一个最小的工作示例。由于某种原因,即使我没有调用

plt.display()
,单个数字也会显示在这里,但在主代码中它们却不是。这里最终的数字是空的。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(3,3)

def plottingfunction(x,y):
    plt.figure()
    plt.scatter(x, y)
    return plt.gcf()

for i in range(3):
    for j in range(3):
        x = np.random.rand(10)
        y = np.random.rand(10)
        ax[i,j] = plottingfunction(x,y)

plt.show()

那么如何在网格中绘制所有现有的函数,例如使用 python matplotlib 在数组内收集的函数。

python matplotlib julia
1个回答
0
投票

我遇到了同样的问题,不幸的是我无法找到一种方法来替换/重新创建

matpllotlib
中的轴。

对于此类事情的推荐做法是将轴传递给函数。

所以你的代码会稍微改变一下,看起来像:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(3, 3)


def plottingfunction(x, y, ax, **kwargs):
    # Do something with the values etc
    ax.scatter(x, y, **kwargs)


for i in range(3):
    for j in range(3):
        x = np.random.rand(10)
        y = np.random.rand(10)
        plottingfunction(x, y, ax[i, j])

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.