我正在嘗試使用matplotlib為正在研究的論文繪制一些數(shù)字。我有2D numpy數(shù)組中的兩組數(shù)據(jù):一個(gè)ascii hillshade柵格,我可以使用以下方式高興地繪制和調(diào)整:import matplotlib.pyplot as ppimport numpy as nphillshade = np.genfromtxt('hs.asc', delimiter=' ', skip_header=6)[:,:-1]pp.imshow(hillshade, vmin=0, vmax=255)pp.gray()pp.show()這使:有第二個(gè)ascii柵格,描繪了流經(jīng)景觀的河流的屬性??梢园凑张c上述相同的方式來繪制此數(shù)據(jù),但是將不對應(yīng)于河流網(wǎng)絡(luò)的數(shù)組中的值分配為-9999的無數(shù)據(jù)值。目的是將無數(shù)據(jù)值設(shè)置為透明,以便河流值覆蓋山體陰影。這是河流數(shù)據(jù),理想情況下,此處表示為0的每個(gè)像素都是完全透明的。在對此進(jìn)行了一些研究之后,似乎我可以將我的數(shù)據(jù)轉(zhuǎn)換為RGBA數(shù)組并設(shè)置alpha值以僅使不需要的單元格透明。但是,river數(shù)組中的值是浮點(diǎn)數(shù),無法進(jìn)行轉(zhuǎn)換(因?yàn)樵贾凳菆D的整個(gè)點(diǎn)),并且我相信imshow如果使用RGBA格式,該函數(shù)只能采用無符號(hào)整數(shù)。有什么辦法可以解決這個(gè)限制?我曾希望我可以簡單地用像素值和alpha值創(chuàng)建一個(gè)元組,然后像這樣繪制它們,但這似乎是不可能的。我也PIL嘗試過創(chuàng)建一個(gè)沒有數(shù)據(jù)值透明的河流數(shù)據(jù)的PNG文件,但是這似乎會(huì)自動(dòng)將像素值縮放到0-255,從而丟失我需要保留的值。我歡迎任何人對這個(gè)問題有任何見識(shí)。
在Matplotlib中基于像素值設(shè)置透明度
慕桂英3389331
2021-03-28 12:02:22