2015-06-30 2 views
1

Я хотел бы спросить что-нибудь о Matlab. Я не мог найти это на этом форуме. Я хотел бы создать новое текстовое поле прямо в верхней части окна легенды в сюжете. Я пытаюсь сделать это с помощью функции, называемой аннотацией, но я не делаю этого правильно, потому что иногда новый ящик находится над полем легенды. Есть ли способ сделать это, чтобы сохранить мой сюжет с хорошим взглядом?Аннотация как текстовое поле в верхней части участка в matlab

Я использую этот код: аннотация ('textbox', [0.7 0.192 0.1 0.1], 'String', {'OOI =', num2str (OOI)}); Я играл на этих цифрах, но я не мог найти правильные, но делать то, что хочу.

У меня есть другой вопрос. Для некоторых графиков мои оси не начинаются в точке (0,0). Он начинается с (0, -что-то). Я хотел бы знать, есть ли способ начать с (0,0). Я попробовал

комплект (gca, 'XTick', [0: 20: 300]); set (gca, 'YTick', [0: 0.1: 1]);

но не работает. Не могли бы вы, ребята, помочь мне? Любая помощь, я был бы очень рад.

+0

можете ли вы опубликовать минимальный рабочий пример с кодом, который вы используете для генерации легенды? Вы можете использовать фиктивные данные только для демонстрации, что будет легче понять, в чем проблема и как помочь. Благодаря! –

ответ

0

На вопрос с осями сначала: вы должны установить XLim и YLim, i.e set(gca,'XLim',[0 1],'YLim',[0 1]). Вы также должны установить XLimMode, YLimMode - manual.

На вопросе с textbox, вы должны установить Parent свойства annotation быть ваша осью и установить Units свойства как для normalized (или другой, но должна быть одинаковым). Из моего собственного опыта, если вы используете версию раньше, чем R2014b, тогда позиционирование annotation работает не очень хорошо, но из R2014b вверх, как только вы правильно установите свойство Parent, позиционирование не является проблемой.

Обновление: небольшой пример для вас, однако вы можете использовать документацию Matlab и google !!!

f = figure('Position', [values_in_pixels]); 
a = axes('Parent', f); 
t = annotation('textbox', [0 0 1 1], 'EdgeColor', 'r'); 

На данный момент t является примечанием, которое является дочерним скрытым объектом AnnotationPane:

>> tp = get(t, 'Parent') 
tp = 
    AnnotationPane 

и tp является потомком вашей фигуры f:

>> isequal(f, get(tp, 'Parent')) 
ans = 
    1 

Однако t в настоящее время позиционируется в соответствии с f, так как вы можете видеть, что красная рамка подходит к фигуре е.

Изменение t «s родительского свойства быть ваши осями a и вы видите красная граница подходит к вашим осям:

set(t, 'Parent', a); 

Изменения t» положению s, и вы можете увидеть t теперь позиционируются в соответствии с вашим оси:

set(t, 'Position', [.2 .5 .3 .1]) 

Примечание: поскольку обе оси и аннотаций имеют Units = normalized по умолчанию, после установки t быть ребенком a, вы не нужно заботиться об этом при перемещении или повторной позиционировании аннотации.

+0

У вас есть пример для моего текстового поля? Моя версия Matlab - 2015a. – Skar

+0

добавил небольшой пример, надеюсь, что он поможет – scmg

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