![](/img/trans.png)
[英]matplotlib tkinter is very slow and freeze when redrawing 2D plots
[英]Matplotlib: slow redrawing when panning and zooming with pcolormesh
我正在尝试使用plt.pcolormesh绘制一个1000x1000点的颜色plt.pcolormesh
。 它可以工作,但其平移和缩放速度却比地狱慢:仅提供1 fps。
有没有办法加快速度?
这是我的简单代码:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
r_array = np.linspace(0, 2, 1000)
phi_array = np.linspace(0, 2 * np.pi, 1000)
r_grid, phi_grid, = np.meshgrid(r_array, phi_array)
z_grid = r_grid + phi_grid
x_grid = r_grid * np.cos(phi_grid)
y_grid = r_grid * np.sin(phi_grid)
plt.pcolormesh(x_grid, y_grid, z_grid)
plt.show()
也许这只是为了降低速度而换来另一个速度,但是仅使用scipy.interpolate.griddata将您的数据转换成简单的图像矩阵呢? 计算需要一段时间,但是平移和缩放非常快。
import matplotlib.pyplot as plt
import numpy as np
import scipy.interpolate
fig,axs = plt.subplots(1,2,figsize=(8,4))
r_array = np.linspace(0, 2, 400)
phi_array = np.linspace(0, 2 * np.pi, 400)
r_grid, phi_grid, = np.meshgrid(r_array, phi_array)
z_grid = r_grid + phi_grid
x_grid = r_grid * np.cos(phi_grid)
y_grid = r_grid * np.sin(phi_grid)
x = np.linspace(np.min(x_grid),np.max(x_grid),500)
y = np.linspace(np.min(y_grid),np.max(y_grid),500)
X,Y = np.meshgrid(x,y)
data1 = scipy.interpolate.griddata((x_grid.ravel(),y_grid.ravel()),z_grid.ravel(),(X,Y),method='linear')
data2 = scipy.interpolate.griddata((x_grid.ravel(),y_grid.ravel()),z_grid.ravel(),(X,Y),method='nearest')
extent = (np.min(x_grid),np.max(x_grid),np.min(y_grid),np.max(y_grid))
axs[0].imshow(data1,interpolation='nearest',aspect='auto',extent=extent)
axs[1].imshow(data2,interpolation='nearest',aspect='auto',extent=extent)
axs[0].set_title('griddata, method=\'linear\'')
axs[1].set_title('griddata, method=\'nearest\'')
plt.tight_layout()
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.