Matplotlib - 在网格网格数组中使用imshow转换坐标

时间:2016-01-05 17:05:28

标签: python matplotlib imshow

我正在使用python脚本来计算金属中缺陷的应力场(Z meshgrid数组)。为了做到这一点,我必须转换X和Y网格网格(xtrans和ytrans)。然后我使用imshow绘制颜色和轮廓线。我遇到的问题是,imshow假定Z数组包含两个范围之间线性运行的点的值。例如,假设Z [0,:]是Y方向上的值,从-5,-4,-3,-2 ...... 3,4,5表示。在坐标变换之后,Y不在-5和5之间线性间隔。

有没有办法使用imshow或类似的函数,有Xtrans,ytrans meshgrids作为输入参数?

import numpy as np
import scipy
import matcompat
from scipy.integrate import quad, nquad
from CalcQSB import CalcQSB
from dislstress import dislstress
import matplotlib.pyplot as plt
from matplotlib import cm
import scipy.interpolate

...

# evaluate over a grid
num = 50
npts =200
xi, yi = np.linspace(-num, num, npts), np.linspace(-num, num, npts)

X, Y = np.meshgrid(xi, yi)
Z = np.zeros(matcompat.size(X))

xtrans, ytrans = np.meshgrid(xi, yi)

...用于确定Z数组中正确值的更多代码。

v = np.linspace(np.amin(Z), np.amax(Z), 15, endpoint=True)

plt.imshow(Z, vmin=np.amin(Z), vmax=np.amax(Z), origin='lower',
       extent=[np.amin(xtrans), np.amax(xtrans), np.amin(ytrans), np.amax(ytrans)])
plt.colorbar(ticks=v)

CS = plt.contour(xtrans, ytrans, Z,20,colors='k')

plt.show()

如果有人可以提供帮助,我将非常感激。

谢谢

卢克

0 个答案:

没有答案