2017-02-15 1 views
3

У меня есть длинная строка, которую я хотел бы добавить к подзаголовку в виде описательного текста.Как обернуть строки при построении с помощью `text`?

description = 'This kitchen has white cabinets and two blue chairs. The upper cabinet has a black microwave. The paper towels are above the trash can. There is a black garbage can just on the left of the blue chair. On its left there is a red fire distinguisher.'; 

Я попытался добавить новых персонажей линии после каждого предложения, чтобы он лучше соответствовал.

subplot(1,2,2); 
with_new_lines = regexprep(description, '\.', '\.\n'); 
text(0.5, 0.5, with_new_lines, 'FontSize', 14', 'FontWeight', 'Bold', ... 
    'HorizontalAlignment', 'Center', 'VerticalAlignment', 'middle') ; 

Но он по-прежнему не подходит должным образом в пределах оси.

Есть ли способ обернуть строку динамически, чтобы она соответствовала подзаголовку?

enter image description here

+3

http://weknowmemes.com/wp-content/uploads/2013/06/fire-distinguisher.png – gnovice

+1

@gnovice Мне нравится мему, но я молюсь невиновным; это набор данных, собранный толпой, [SentencesNYUv2] (http://www.cs.toronto.edu/~fidler/projects/sentences3D.html). – Cecilia

+0

@Sardar_Usama Это не соответствует динамическим критериям – Cecilia

ответ

3

Как об использовании окна аннотирования с FitBoxToText собственности офф?

description = 'This kitchen has white cabinets and two blue chairs. The upper cabinet has a black microwave. The paper towels are above the trash can. There is a black garbage can just on the left of the blue chair. On its left there is a red fire distinguisher.'; 
figure;subH=subplot(1,2,2); 
pos=get(subH,'Position'); 
annotation('textbox', pos,... 
    'String', description,... 
    'FitBoxToText','off'); 

Вы можете изменить расположение, изменив 1-ые два элемента pos, которые (я думаю) описывают левый нижний угол, но забыть.

1

Вы можете использовать функцию textwrap в одном из двух способов:

  1. обтекание текста, чтобы вписываться в тексте uicontrol:

    hText = uicontrol('Style', 'Text', 'Position', ...(some starting position)...); 
    [wrappedText, newPosition] = textwrap(hText, {description}); 
    set(hText, 'String', wrappedText, 'Position', newPosition); 
    
  2. Wrap текст на фиксированное количество столбцов до построения графика с text:

    wrappedText = textwrap({description}, 20); 
    text(0.5, 0.5, wrappedText, 'FontSize', 14', 'FontWeight', 'Bold', ... 
        'HorizontalAlignment', 'center', 'VerticalAlignment', 'middle'); 
    
+0

Полезно знать, что я могу использовать 'textwrap' с' text'. Я просмотрел документацию, но я сосредоточился на обсуждении uicontrols. Ваши решения, безусловно, превосходят мои, но я все равно буду присуждать Jon ответ на решение, которое является динамическим с изменением размера фигуры. Хотел бы я дать вам обоих. – Cecilia

+0

@Cecilia: Если изменение размера происходит часто, я определенно соглашусь с ответом Джона. 'textwrap' лучше всего подходит для статических элементов, в частности uicontrols. – gnovice

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