Python - 没有插值的强度图

时间:2016-10-06 11:34:48

标签: python matplotlib

我需要制作强度图。

我有三个从真实数据中导入的x,y,z值列表:x_list, y_list, z_list。每个列表包含200个值。因此,每个x,y对都有一个相应的z值。

我在网上搜索了一些关于StackOverflow的另一个问题之后尝试了以下内容:

import numpy as np
import pylab as plt

data = np.loadtxt('data.d')
x_list = data[:,0]
y_list = data[:,1]
z_list = data[:,2]

from scipy.interpolate import interp2d

f = interp2d(x_list,y_list,z_list,kind="linear")

x_coords = np.arange(min(x_list),max(x_list)+1)
y_coords = np.arange(min(y_list),max(y_list)+1)
Z = f(x_coords,y_coords)

fig = plt.imshow(Z,
           extent=[min(x_list),max(x_list),min(y_list),max(y_list)],
           origin="lower")


fig.axes.set_autoscale_on(False)
plt.scatter(x_list,y_list,400,facecolors='none')

plt.show()

这使用插值,我不确定它正是我需要的。 有没有办法只绘制z的200个值,对应于200 x,y对,我有一个给定的值,没有插值?显然我仍然需要某种强度关系",我不能只有一个散点图而没有解释强度" 200 z值。

1 个答案:

答案 0 :(得分:2)

根据我的理解,您希望在2D图形中显示xyz点,其中z值将由颜色表示。如果这是正确的,解决方案就像在散点图中说明facecolors=z_list一样简单:

data = np.random.rand(200,3)
x_list = data[:,0]
y_list = data[:,1]
z_list = data[:,2]

plt.scatter(x_list,y_list,200,facecolors=z_list)

plt.colorbar()
plt.show()

示例输出: enter image description here