À mon avis, la meilleure idée est d'utiliser une rampe grise au lieu d'une colourbar divergente:
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')
Vous pouvez utiliser gray
aussi bien, mais il est juste une version inversée et vous donnez du blanc pour les valeurs positives, ce qui n'est pas habituel pour les données sismiques.
Si vous êtes décidé à faire ce que vous demandez, je pense que le plus simple serait d'utiliser PIL
pour convertir les images en niveaux de gris.
plt.imshow(data, cmap='jet', interpolation='none')
plt.savefig('image.png')
maintenant convertir et enregistrer:
from PIL import Image
im = Image.open('image.png')
im = im.convert('L')
im.save('image_grey.png')
Juste mon avis, mais si les données sismiques sera en nuances de gris, alors il est préférable de ne pas utiliser un colourbar divergente - parce que vos lecteurs peuvent alors ne pas voir la différence entre les amplitudes positives et négatives. – kwinkunks
Voyez-vous une autre possibilité? Je suis d'accord que nous ne pouvons pas voir les différences, mais je dois utiliser des couleurs noir et blanc et j'ai des valeurs positives et négatives ... – user5276228
Utilisez une rampe de niveaux de gris simple (blanc pour négatif est classique). – kwinkunks