Как использовать укусы в качестве клещей на участках? - PullRequest
0 голосов
/ 10 января 2020

Если оси x и y являются числами, я могу отобразить текст на графике с помощью функций num2str, cellstr и strtrim. Эти функции форматируют значения координат в массив строк, который затем можно отобразить с помощью функции text:

strValues = strtrim(cellstr(num2str(
  [X(:) Y(:)],
  '(%d,%d)'
)));
text(
  X,
  Y,
  strValues,
 'VerticalAlignment',
 'bottom'
);

Но что, если ось x содержит строки вместо чисел?

X=['john' 'jack' 'mary'.....] 
Y=[0 1 2 3]

Как мне тогда показать значения y на всех графиках данных?

Ответы [ 2 ]

1 голос
/ 10 января 2020

Вы можете создать график с категориями ...

X = categorical( {'john','jack','mary','jack'} );
Y = [1 2 3 3];

figure;
plot( X, Y, '.', 'markersize', 20 );

plot

Затем вы можете разместить text так же, как с цифрой c data

 text( categorical({'jack'}), 2, 'test' )

Чтобы добавить значение в качестве метки ко всем точкам, вы можете использовать X напрямую:

text( X, Y + 0.2, cellstr( num2str( Y(:) ) ) )

enter image description here

0 голосов
/ 10 января 2020

1-й способ: Используйте обычное построение графиков (хотя вам может понадобиться сначала перечислить ваши категории), а затем установите галочки для вашей оси. Это обеспечивает максимальную гибкость за счет возможного смешения

set(gca, 'xTick',1:length(X), 'xTickLabel',X)

. Первое гарантирует, что все тики находятся в заговоре, а вторая пара имя-значение переименовывает эти тики. Когда речь идет об именах или более длинных строках, вы также можете повернуть метки тиков с помощью 'xtickangle' .

MathWorks использует этот обходной путь даже в examples :

x = linspace(-10,10,200);
y = cos(x);
plot(x,y)
xticks([-3*pi -2*pi -pi 0 pi 2*pi 3*pi])
xticklabels({'-3\pi','-2\pi','-\pi','0','\pi','2\pi','3\pi'})

2-й способ: Если у вас есть данные categorial, вы можете построить их сразу. Взгляните на do c здесь .

...