Python 清除轴后重新绘制四边形网格集合
创建pcolormesh打印时,如下所示。ax.pcolormesh调用返回一个对象 是否可以将此对象保存在变量中、清除轴或图形、打印其他内容,然后使用保存的matplotlib.collections.QuadMesh对象重新绘制初始pcolormesh 我尽量避免再次打电话给ax.pcolormesh 小例子:Python 清除轴后重新绘制四边形网格集合,python,matplotlib,Python,Matplotlib,创建pcolormesh打印时,如下所示。ax.pcolormesh调用返回一个对象 是否可以将此对象保存在变量中、清除轴或图形、打印其他内容,然后使用保存的matplotlib.collections.QuadMesh对象重新绘制初始pcolormesh 我尽量避免再次打电话给ax.pcolormesh 小例子: import matplotlib.pyplot as plt; import numpy as np; counter = 0; def onClick(event):
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对象有一个draw方法,但是它需要一个渲染器,我不知道如何获得其中的一个
非常感谢您的帮助。此代码的目的似乎是在两个绘图之间来回切换。因此,与其在单个轴上多次重新创建内容,您可能只想使用两个轴。一个用于绘图,一个用于彩色网格。根据计数器的不同,可以将其中一个设置为不可见,也可以在轴上绘制一些新内容
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()
是的,那正是我想要的。没有意识到这是可能的。谢谢