[英]matplotlib - How to add pixel size legend?
import scipy as sp
import scipy.misc
lena = sp.misc.lena()
plt.imshow2(lena)
然后我想要添加一個指示距離的條形圖。 即假設這是用相機捕獲的實際圖像,我知道每個像素對應1cm。 我想添加一個10 x 100像素的欄,並在欄上方添加1m的文字。 有沒有簡單的方法可以做到這一點?
謝謝
在下面的示例中,我對您的問題進行了簡單的解決。 將其擴展到涵蓋更一般的情況應該不難。 最難的是pos_tuple
。
由於pos_tuple
代表Rectangle
左上角,因此您必須減去鋼筋本身的長度,然后仍然保留一些填充,否則它將被繪制在圖形的最邊緣,並且看起來很難看。 因此,更一般的pos_tuple
看起來像
pos_tuple = (np.shape(lena)[0]-m2pix(1)-padding_right, np.shape(lena)[1]-m2pix(0.1)-padding_bottom)
這整個事情也可以改編成一個整潔的函數add_image_scale
,它將插入您的圖形並吐出一個具有“膠合”比例的圖形。 也可以將m2pix
概括為接收刻度,而不是對其進行硬編碼。
import scipy as sp
import scipy.misc
import numpy as np
lena = sp.misc.lena()
def m2pix(pix): #it takes a 100 pix to make a meter
return 100*pix
pos_tuple = (np.shape(lena)[0]-100-12, np.shape(lena)[1]-10-2)
rect = plt.Rectangle( pos_tuple, m2pix(1), m2pix(0.1))
plt.imshow2(lena)
plt.gca().add_patch(rect)
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.