現在我得到了像fig1這樣的圖像,不同的顏色意味着不同的東西,我想在圖1的底部添加一個圖例(圖2),該怎麼做?我有每種顏色的RGB值。如何根據圖像上的顏色繪製圖例?
,這是我的代碼:
# 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)
歡迎來到Stack Overflow!不幸的是,根據您提供的信息,很難幫助您。請參閱[如何創建最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。簡而言之,請向我們提供您用於生成圖像和所有相關標籤的代碼(我猜測至少matplotlib標籤丟失了) –
顯示您嘗試過的內容 – eyllanesc