轴后重绘四边形网格集合

2024-09-28 18:58:49 发布

您现在位置:Python中文网/ 问答频道 /正文

创建pcolormesh打印时,如下所示。这个斧头调用返回一个matplotlib.collections.QuadMesh对象。你知道吗

是否可以将此对象保存在变量中,清除轴(或图形?),然后使用保存的matplotlib.collections.QuadMesh文件反对?你知道吗

我尽量不打电话斧头再一次。你知道吗

小例子:

import matplotlib.pyplot as plt;
import numpy as np;

counter = 0;

def onClick(event):
    global counter;
    counter += 1;

    ax.clear();

    if counter % 2:
        # Plot something else
        ax.plot(x1, x2)
    else:
        # Re-draw the initial pcolormesh using quadMeshCol?
        pass;

    fig.canvas.draw();

x1 = np.random.randn(100);
x2 = np.random.randn(100);
x3 = np.random.randn(100, 100);

fig, ax = plt.subplots();

quadMeshCol = ax.pcolormesh(x1, x2, x3);

fig.canvas.mpl_connect("button_press_event", onClick);

plt.show();

我整个上午都在努力,但没有成功。
我确实看到matplotlib.collections.QuadMesh文件对象有一个绘制方法,但它需要一个渲染器,我不知道如何获得其中之一。你知道吗

非常感谢您的帮助。你知道吗


Tags: 对象matplotlibnpcounterfigpltrandomax
1条回答
网友
1楼 · 发布于 2024-09-28 18:58:49

这段代码的目的似乎是在两个绘图之间来回切换。因此,与其在单个轴中多次重新创建内容,您可能只需要使用两个轴。一个用于绘图,一个用于彩色网格。根据计数器的不同,可以将其中一个设置为不可见,也可以在轴上绘制一些新内容。你知道吗

import matplotlib.pyplot as plt
import numpy as np

counter = 0

def onClick(event):
    global counter
    counter += 1

    if counter % 2:
        # Plot something else
        ax2.clear()
        ax2.plot(x1, x2)
        ax.set_visible(False)
        ax2.set_visible(True)

    else:
        ax.set_visible(True)
        ax2.set_visible(False)

    fig.canvas.draw_idle()

x1 = np.random.randn(100)
x2 = np.random.randn(100)
x3 = np.random.randn(100, 100)

fig = plt.figure()
ax = fig.add_subplot(111, label="1")
ax2= fig.add_subplot(111, label="2")
ax2.set_visible(False)

quadMeshCol = ax.pcolormesh(x1, x2, x3)

fig.canvas.mpl_connect("button_press_event", onClick)

plt.show()

或者更紧凑:

import matplotlib.pyplot as plt
import numpy as np

def onClick(event):
    ax.set_visible(not ax.get_visible())
    ax2.set_visible(not ax2.get_visible())
    fig.canvas.draw_idle()

x1 = np.random.randn(100)
x2 = np.random.randn(100)
x3 = np.random.randn(100, 100)

fig = plt.figure()
ax = fig.add_subplot(111, label="1")
ax2= fig.add_subplot(111, label="2")
ax2.set_visible(False)

quadMeshCol = ax.pcolormesh(x1, x2, x3)
line, = ax2.plot(x1, x2)

fig.canvas.mpl_connect("button_press_event", onClick)

plt.show()

相关问题 更多 >