下面的代码产生的圆形图案:Matplotlib“灰色”颜色表不跨越全黑到白范围
import numpy as np
import matplotlib.pyplot as mp
def sphere_depth(x, y, depth, radius):
squ = x**2 + y**2
rsqu = radius**2
squ[squ > rsqu] = rsqu
res = np.sqrt(rsqu - squ)
res -= (radius - depth)
res[res < 0.] = 0.
return res
y_pix = x_pix = 100.
c_steps = 10
x, y = np.mgrid[0:x_pix:1, 0:y_pix:1]
z = sphere_depth(x - x_pix/2, y - y_pix/2, 5., 100.)
lvls = np.linspace(z.min(), z.max(), c_steps)
mp.close(1)
fig = mp.figure(1)
mp.axes([0, 0, 1, 1], frameon=False)
mp.contourf(x, y, z, cmap=mp.cm.gray, levels=lvls)
mp.axis('off')
mp.savefig("test.png")
颜色映射设定为“灰色”和我期望的最低值对应于黑色最大值为白色。虽然后者是事实,但前者并不适用于这个例子。最低值为深灰色。这可以在增加c_steps
时进行调整,但我需要一个非常粗糙的灰色彩色贴图。感谢任何想法,如何从黑色开始,以白色结束。
将'lvls'改为100.YOu只有10个级别。所以colormap将只显示这10个级别。 – ssm 2014-11-23 13:03:44
这是故意的,正如我在我的问题中解释的那样。 – Clemens 2014-11-23 13:32:27