调整matplotlib色彩图以显示模拟

时间:2016-09-21 18:22:34

标签: python numpy matplotlib simulation

我根据这个实验构建了一个小模拟: https://www.youtube.com/watch?v=plVk4NVIUh8,显示细菌随时间的演变。

我已经在培养皿的边缘初始化了一些具有随机抗性的细菌:

enter image description here

随着细菌的扩散,来自非占用空间的对比度越来越少,经过100代,它变得像这样: enter image description here

我使用plt.matshow(Map)制作图片,其中Map是2D numpy数组,细菌阻力值(总是大于0),非占用空间表示为0.我尝试了不同的颜色图,但是它没有帮助。我的目标是使非占用空间呈现恒定的深色, 受感染的空间有些浅色,可以注意到不同的阻力值。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

你可以得到一个暗色的colormap用于低值,例如'magma'和define,因为Andreas建议使用'vmin'值。 e.g。

import matplotlib.pyplot as plt
from scipy import rand

a = rand(10, 20) + 0.5
a[0, 0] = 0
cmap = plt.get_cmap('magma')
img = plt.pcolormesh(a, cmap=cmap, vmin=0,)
img.figure.show()

enter image description here

干杯! 小号

答案 1 :(得分:0)

我能够使用logaritmic normalization进行更好的视觉化:让我们说我的细菌地图具有非常不同的阻力值:

maxval=np.max(sumh)
minval=np.min(sumh)
colormap = plt.get_cmap('magma')
norm = mpl.colors.LogNorm(vmax=maxval, vmin=minval)

sumMap是绘制的numpy数组,包含小数,中号和大数。 构建色彩映射和规范化器:

img = plt.pcolormesh(sumh, cmap=colormap,  norm=norm)
img.figure.show()

如果我使用规范化,地图就像这样:

img = plt.pcolormesh(sumh, cmap=cmap,  )
img.figure.show()

enter image description here

如果我没有:

<?php endif;?>

enter image description here