调整 matplotlib 颜色图以显示模拟

Adjusting matplotlib colormap to show simulation

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

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

随着细菌的传播,与未被占据的space的对比越来越小,经过100代后变成了这样:

我用plt.matshow(Map)做图,其中Map是一个二维numpy数组,有细菌抗性值(总是大于0),非占用的space表示为0. 我尝试了不同的颜色映射,但没有帮助。我的目标是让非占用 space 一些恒定的深色, 被感染的space有些浅色,对比一下电阻值的不同。

你能帮我吗?

对于低值,例如 'magma',您可以获得深色的 colormap 并定义,正如 Andreas 建议的 '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()

干杯! S

我能够使用对数归一化使可视化效果更好:假设我的 bacteriaMap 具有完全不同的电阻值:

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)

如果我使用标准化,地图会像这样:

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

如果我不这样做:

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