Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 黑白色条_Python_Matplotlib_Colormap - Fatal编程技术网

Python 黑白色条

Python 黑白色条,python,matplotlib,colormap,Python,Matplotlib,Colormap,我通常使用matplotlib的“地震”色条 对于出版物的需要,我必须使用黑色和白色。我希望保持与“地震”相同的方面(即最高最小值和最大值的最黑值),如图所示: 如何进行此转换?在我看来,最好使用灰色渐变,而不是发散的色条: import numpy as np import matplotlib.pyplot as plt %matplotlib inline data = 2 * np.random.random((100, 100)) - 1 plt.imshow(data, cma

我通常使用matplotlib的“地震”色条

对于出版物的需要,我必须使用黑色和白色。我希望保持与“地震”相同的方面(即最高最小值和最大值的最黑值),如图所示:


如何进行此转换?

在我看来,最好使用灰色渐变,而不是发散的色条:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

data = 2 * np.random.random((100, 100)) - 1

plt.imshow(data, cmap='Greys', interpolation='none')

您也可以使用
灰色
,但它只是一个相反的版本,将为正值提供白色,这对于地震数据是不常规的

如果你想按要求做,我认为最简单的方法可能是使用
PIL
将图像转换为灰度

plt.imshow(data, cmap='jet', interpolation='none')
plt.savefig('image.png')
现在将其转换并保存:

from PIL import Image
im = Image.open('image.png')
im = im.convert('L')
im.save('image_grey.png')

这只是我的观点,但是如果地震是灰阶的,那么最好不要使用发散的色条,因为你的读者看不到正负振幅之间的区别。你看到其他可能性了吗?我同意我们看不到差异,但我必须使用黑色和白色,我有正值和负值…使用一个简单的灰度渐变(白色表示负数是常规的)。或者用其他方式表示数据。等高线图通常在黑白两种颜色下看起来更好。也可以使用三维线框曲面打印。