matplotlib - 如何添加像素大小图例?

时间:2015-03-09 21:26:58

标签: python matplotlib

import scipy as sp
import scipy.misc
lena = sp.misc.lena()

plt.imshow2(lena)

我想要的是添加指示距离的条形图。即假设这是用相机拍摄的实际图像,我知道每个像素对应1cm。我想添加一个10 x 100像素的条形图,并在条形图上方添加一些文字。有一种简单的方法可以做到这一点吗?

谢谢

1 个答案:

答案 0 :(得分:0)

在下面的例子中,我简单地解决了你的问题。扩展这个以涵盖更一般的情况应该不会太难。最重要的是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()

就添加文字而言,您可以使用非常容易使用的annotationstext