2016-09-21 81 views
0

我正在根据此实验构建一个小模拟: https://www.youtube.com/watch?v=plVk4NVIUh8,它显示了细菌随时间的演变。调整matplotlib颜色映射以显示模拟

我在陪替氏培养皿的边缘初始化一些细菌具有随机电阻:

enter image description here

作为细菌传播,从非占用的空间对比度越来越少,100代后它成为这样的: enter image description here

我使用plt.matshow(地图),以使图片,其中地图是2D numpy的阵列,与细菌的电阻值(总是大于0)时,非占用的空间被表示为0.我尝试了不同的颜色映射,但它没有帮助。我的目的是使非占用空间有一些恒定的深色,感染空间有些浅色,并注意不同的电阻值。

你能帮我吗?

+0

尝试使用'colorbar',它会告诉你,如果你的规模表现出来。您可能必须设置手动'vmin/vmax'。 'matshow'在引擎盖下使用['imshow'](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow),这有时会伴随缩放。考虑使用['pcolormesh'](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.pcolormesh)。 –

回答

0

我能够使visulaization更好,使用logaritmic正常化:比方说,我bacteriaMap具有真正不同resistancevalues:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib as mpl 

size=10 
a = rand(size, size) * 0.2 
b = rand(size, size) * 2 
c = rand(size, size) * 20 
sumMap = np.concatenate((a,b,c), axis=1) 

sumMap是numpy的阵列来绘制,小,中,大数字。 构建颜色表和正规化:

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

如果我使用正常化地图loks这样的:

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

enter image description here

如果我不去:

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

enter image description here

1

你可以得到一个colormap暗值为低值,如'岩浆'和定义,因为安德烈亚斯建议'vmin'值。例如

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

干杯! 小号

+0

谢谢,使用vmin,vmax值帮助了我很多,但真正的交易是logaritmic标准化 – user3598726