Python Matplotlib:带有imshow的特定颜色
我有一些3D数据,例如Python Matplotlib:带有imshow的特定颜色,python,matplotlib,Python,Matplotlib,我有一些3D数据,例如d=[x,y,z,f] 其中z是z中的一列数字,用作颜色信息 f是一个 如果x和y具有某些特定值(丑^^),则为0 1如果x和y正常 因此,对于好的数据d[d[:,3]==1]我想生成一个配置文件 plt.imshow(resampled.T, extent=extent, vmin=MIN, vmax=MAX, origin='lower') 对于丑陋的数据d[d[,3]==0]我只想使用一种特定的颜色,例如黑色 有没有办法实现这一点 编辑:结合@eumiro和@Rut
d=[x,y,z,f]
其中z
是z中的一列数字,用作颜色信息
f
是一个
x
和y
具有某些特定值(丑^^),则为0x
和y
正常d[d[:,3]==1]
我想生成一个配置文件
plt.imshow(resampled.T, extent=extent, vmin=MIN, vmax=MAX, origin='lower')
对于丑陋的数据d[d[,3]==0]
我只想使用一种特定的颜色,例如黑色
有没有办法实现这一点
编辑:结合@eumiro和@Rutger Kassies的评论,我现在得到以下结果
我认为这是令人满意的。
为了完整性(或者可能有一些优化我不知道^^^),以下是代码和:
你不能用f来遮罩z,在z中创建一个普通的颜色贴图吗
dd = d[:, :3]
dd[:,2] = dd[:,2] * d[:,3]
然后转换为如下图像:
M = dd.max(0)
m = dd.min(0)
x = np.arange(m[0], M[0] + 1)
y = np.arange(m[1], M[1] + 1)
[X, Y] = np.meshgrid(x, y)
Z = np.zeros_like(X)
for num in range(0,size(dd, 0)):
Z[dd[num, 0], dd[num, 1]] = dd[num, 2]
现在,您应该能够像绘制普通图像一样绘制
Z
,或者像绘制曲面一样绘制[X,Y]
用np.nan
替换所有“丑陋的数据”怎么样?确实是eumeriro。蒙版阵列将非常方便。然后可以使用cmap.set_bad()属性控制可视化@Tengis,你应该提供一个有效的例子。例如,x、y、z数据是规则网格化的还是分散的点?代码中的c是什么?我喜欢你的想法,但似乎没有必要挂国旗。我不知道np.nan idea.oops c一定是d或dd(甚至dd[:,:2])的输入错误,其目的是找到绘制图像所需的网格范围,无论它是否为规则网格。虽然这段代码假设x和y只包含整数,但这是一个很容易修改的方法
M = dd.max(0)
m = dd.min(0)
x = np.arange(m[0], M[0] + 1)
y = np.arange(m[1], M[1] + 1)
[X, Y] = np.meshgrid(x, y)
Z = np.zeros_like(X)
for num in range(0,size(dd, 0)):
Z[dd[num, 0], dd[num, 1]] = dd[num, 2]