import scipy as sp
import scipy.misc
lena = sp.misc.lena()
plt.imshow2(lena)
我想要的是添加指示距离的条形图。即假设这是用相机拍摄的实际图像,我知道每个像素对应1cm。我想添加一个10 x 100像素的条形图,并在条形图上方添加一些文字。有一种简单的方法可以做到这一点吗?
谢谢
答案 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()
就添加文字而言,您可以使用非常容易使用的annotations或text。