2017-01-11 1 views
1

я создаю цветовую карту для данных размера (7x24), что у меня есть, позволяет заменить его с некоторыми случайными числаминормированные единиц для аннотаций Dont добавить до

b = randi(50,7,24); 
t = imagesc(b,[min(min(b)) max(max(b))]); 

Теперь Симметричное добавление аннотаций я должен знать точная начальная и конечная точка моих осей, так что я могу добавить прямоугольник, чтобы выбрать каждую точку изображения

xPOSITION = get(gca,'Position') 

xPOSITION = 

    0.1300 0.1100 0.7750 0.8150 

annotation('rectangle',[0.13 0.11 (0.7750 - 0.13)/24 (0.8150 -0.11)/7],'FaceColor','blue','FaceAlpha',.2) 

ок теперь, когда я пытаюсь добавить аннотацию к точной начальной точки данных, начальная кажется, что это хорошо, но размер прямоугольника, который должен быть фактически равная каждой точке, намного меньше enter image description here согласно моим подсчетам каждый квадрат равен (0.7750 - 0.13)/24 X (0.8150 -0.11)/7, потому что единицы нормализованы, я ошибаюсь в расчете? или аннотация работает по-другому? любая помощь будет высоко оценен

UPDATE только для проверки я добавил 0,11 до каждого измерения аннотации и, кажется, точного размера по той причине, что я не могу понять,

annotation('rectangle',[0.13 0.11 ((0.7750 - 0.13) +0.11)/24 ((0.8150 -0.11)+0.11)/7],'FaceColor','blue','FaceAlpha',.2) 

enter image description here

ответ

2

Недвижимость Position является [left bottom width height]не[left bottom right top] как кажется, что вы его обрабатываете (поскольку вы вычитаете элемент 1 из 3 и 2 из 4). Чтобы правильно вычислить rect для отображения, вы просто хотите разделить компоненты width и height на количество элементов в этих измерениях.

annotation('rectangle', [xPOSITION(1), xPOSITION(2), ... 
         xPOSITION(3)/size(b, 2), xPOSITION(4)/size(b,1)]) 

Или еще проще:

annotation('rectangle', xPOSITION ./ [1 1 fliplr(size(b))]) 

enter image description here

Это, как говорится, если вы просто хотят рисовать прямоугольники на ваших данных, вы, вероятно, лучше просто создать rectangle объект, который автоматически находится в единицах ваших данных

rectangle('Position', [0.5 6.5 1 1], 'LineWidth', 5) 
+0

ohh! Я понимаю свою ошибку сейчас, спасибо за помощь, она отлично работает сейчас – Umar

+0

Спасибо, я понял это сейчас – Umar

Смежные вопросы