python-3.x 如何更新四边形网格时,图更改大小

7lrncoxx  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(93)

我在matplotlib中遇到了以下问题(使用python 3.x)。我想使用一个框架不断变化的qudmesh。如果框架具有相同的初始大小,那就可以了。问题是我的框架会改变大小,我在更新此信息时遇到了问题。
下面的代码片段是一个小的模拟,以显示我的问题是如何来的。当帧2来,我想更新数据,使该图更新所有的大小。
我得到以下错误. TypeError: Dimensions of A (4, 4) are incompatible with X (4) and/or Y (4)
我觉得我没有在这里更新正确的变量,变量array正确更新(我在帧大小相同的情况下尝试过)。问题是向量x和y。有什么想法如何解决这个问题?
谢谢

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import QuadMesh
from random import random

frame1 = np.array([[1,2,3], [4,5,6], [7,8,9]])
frame2 = np.array([[1,2,3, 9], [4,5,6, 9], [7,8,9, 9], [10,11,12,13]])
x = np.array([[1,2,3]])*random()
y = np.array([[1],[2],[3]])*random()

x2 = np.array([[1,2,3, 4]])*random()
y2 = np.array([[1],[2],[3], [4]])*random()

index = 0

with plt.style.context("classic"):
    plt.ion()
    fig, ax = plt.subplots()

    m: QuadMesh = ax.pcolormesh(x, y, frame1, shading='nearest')
    fig.colorbar(m)

    while True:
        frame = frame1 if index <= 25 else frame2

        if index <=25:
            m.update({'array': frame})
        else:
            m.update({'array': frame, 'axes': [x2, y2]})
        print(index)
        index += 1

        plt.show()

字符串

wfveoks0

wfveoks01#

这段代码现在将在帧改变大小时更新x和y数组,错误将被修复。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import QuadMesh
from random import random

frame1 = np.array([[1,2,3], [4,5,6], [7,8,9]])
frame2 = np.array([[1,2,3, 9], [4,5,6, 9], [7,8,9, 9], [10,11,12,13]])
x = np.array([[1,2,3]])*random()
y = np.array([[1],[2],[3]])*random()

x2 = np.array([[1,2,3, 4]])*random()
y2 = np.array([[1],[2],[3], [4]])*random()

index = 0

with plt.style.context("classic"):
    plt.ion()
    fig, ax = plt.subplots()

    m: QuadMesh = ax.pcolormesh(x, y, frame1, shading='nearest')
    fig.colorbar(m)

    while True:
        frame = frame1 if index <= 25 else frame2
        axes = [x, y] if index <= 25 else [x2, y2]

        m.update({'array': frame, 'axes': axes})
        print(index)
        index += 1

        plt.show()

字符串
我希望这段代码能正常工作……

相关问题