Maintenant, j'ai une image comme fig1 et une couleur différente signifie une chose différente, et je veux ajouter une légende (fig2) au bas de la fig1, comment faire cela? J'ai la valeur rgb de chaque couleur.Comment tracer une légende en fonction de sa couleur sur une image?
ce qui est le code que je suis:
# coding=utf-8
import matplotlib
matplotlib.use('Agg')
import h5py
import numpy
from PIL import Image
from PIL import ImageDraw
import matplotlib.pyplot as plt
import matplotlib.ticker as plticker
import sys
table={
k:v for k,v,n in [
[
127,
[
100,
100,
100
],
"NO DATA"
],
[
126,
[
0,
0,
0
],
"SPACE"
],
[
0,
[
200,
255,
255
],
"CLEAR"
],
[
2,
[
0,
0,
244
],
"WATER CLOUD"
],
[
3,
[
32,
165,
225
],
"ICED CLOUD"
],
[
4,
[
33,
255,
170
],
"MIXED CLOUD"
],
[
5,
[
255,
0,
0
],
"CIRRUS CLOUD"
],
[
6,
[
180,
20,
255
],
"Opaque cloud"
],
[
7,
[
105,
255,
0
],
"OVERLAP CLOUD"
],
[
9,
[
224,
180,
0
],
"UNKNOWN CLOUD"
]
]
}
def main(_,fn,out):
with h5py.File(fn) as f:
data = f['EVB1'].value
w,h = data.shape
ret = numpy.zeros((w,h,3),'u1')
for i in (0,2,3,4,5,6,7,9,126,127):
ret[data==i]=table[i]
Image.fromarray(ret,mode="RGB").save(out)
image = Image.open(out)
my_dpi = 100.
# Set up figure
fig = plt.figure(figsize=(float(image.size[0])/my_dpi,float(image.size[1])/my_dpi), dpi=my_dpi)
ax = fig.add_subplot(111)
# Set the gridding interval: here we use the major tick interval
myInterval = 249.9
loc = plticker.MultipleLocator(base=myInterval)
# ax=plt.gca()
ax.xaxis.set_major_locator(loc)
ax.yaxis.set_major_locator(loc)
ax.set_xticklabels(['60', '70', '80', '90', '100', '110', '120', '130', '140'])
# ax.set_xticklabels(np.arange(70,150,10))
ax.set_yticklabels(('70', '60', '50', '40', '30', '20', '10', '0'))
#
out1 = out.split('/')[-1].split('.')[0].split('V0001')[0]
ax.set_title(out1,fontsize = 20)
# Add the grid
ax.grid(which='major', axis='both', linestyle='-')
# Add the image
ax.imshow(image)
# Save the figure
fig.savefig(out)
if __name__ == '__main__':
main(*sys.argv)
Bienvenue dans Stack Overflow! Malheureusement, avec les informations que vous nous fournissez, il est très difficile de vous aider. Reportez-vous à [Comment créer un exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve). En bref, veuillez nous fournir le code que vous avez utilisé pour générer votre image et toutes les balises pertinentes (je suppose qu'il manque au moins la balise 'matplotlib'.) –
Montrez ce que vous avez essayé – eyllanesc