实例
已知自变量x,y为两个一维数组,因变量z为对应shape的二维数组,要求画出类似matlab imagesc的二维图效果。
- 效果1
不对x,y做坐标处理,直接由meshgrid生成格点坐标,那么结果图中数据点是体现在网格线上,直观上会觉得少一列数据。 - 效果2
对x,y先做个坐标处理,再由meshgrid生成格点坐标,那么结果图中数据点就是体现在网格中央,及类似matlab imagesc的效果
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10, 11, 5)
y = np.arange(0, 32000, 2000)
z = np.random.rand(len(x), len(y))
# 效果1
xx, yy = np.meshgrid(x, y)
plt.pcolor(xx, yy, z.T, cmap='jet')
plt.colorbar()
plt.show()
# 效果2
dx = (x[1] - x[0]) / 2
dy = (y[1] - y[0]) / 2
x_ = [x[0] - dx] + [a + dx for a in x] # x axis
y_ = [y[0] - dy] + [a + dy for a in y] # y axis
xx, yy = np.meshgrid(x_, y_)
plt.pcolor(xx, yy, z.T, cmap='jet')
plt.colorbar()
plt.show()
效果1
效果2