2013-12-23 2 views
5

Я создал график с данными из файла Excel. Мне нужно, чтобы все xticks, но xticklabels появлялись только на каждые 6 тиков. Я попытался сделать это:В Matlab: Как сохранить все xTicks, но xTicklabels только на каждые 6 xTicks?

tickStep=6; 
Sheet=2; 
filename='MyData.xlsx'; 
[~,xAxis]=xlsread(filename,Sheet,'A2:A60'); 
yAxis=xlsread(filename,Sheet,'B2:B60'); 
plot(1:numel(xAxis),yAxis) 
set(gca,'xtick',1:numel(xAxis)) 
set(gca,'xticklabel',xAxis(1:tickStep:numel(xAxis))) 

К сожалению, это не работает, как и все xticks построены, но xticklabels появляются на каждом XTICK вместо каждого 6-го, как я пытался достичь. Я потратил довольно много времени, думая о решении :-(Мне нужна помощь Спасибо

редактирования:... Я включил изображение, чтобы помочь ответить на следующие вопросы: enter image description here

В связи с этой должностью , было бы также возможно, что стрелки появятся каждые 4 xticks вместо того, чтобы держать их всех, в то же время, что xticlabels нанесены на график каждые 6 xticks ?, не уверены в этом.

+0

Обратите внимание, что вопрос выравнивания теперь также рассматривается в ответе. –

+0

Что касается вашего последнего вопроса, вы можете размещать метки только там, где уже есть тики, поэтому метки ваших меток должны появляться везде, где вам нужен ярлык. – gnovice

ответ

5

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

xTickLabels = cell(1,numel(xAxis)); % Empty cell array the same length as xAxis 
xTickLabels(1:tickStep:numel(xAxis)) = xAxis(1:tickStep:numel(xAxis)); 
            % Fills in only the values you want 
set(gca,'XTickLabel',xTickLabels); % Update the tick labels 

Редактировать в ответ на вопросы, приведенные ниже ...

Причина ярлыки по всей видимости, смещение от клещей, потому что в нижней части букв, как представляется, получать выстроены с отметка. Я предполагаю, что вы хотите, чтобы текст был оправдан таким, что центр каждой буквы совпадает с отметкой. Там нет никакого способа сделать это с помощью стандартных осей MATLAB, но есть некоторые представления о the MathWorks File Exchange, преобразующие клеща метки для text objects и, таким образом, дает вам больше возможностей для настройки text properties:

После преобразования метки для текстовых объектов, вы можете настроить вращение или вертикальное выравнивание путем изменения 'Rotation' и 'VerticalAlignment', соответственно.

+0

+1 Я не читал вопрос правильно (сохраняю все xticks) –

+0

Здравствуйте, спасибо за ответ. Я пробовал код, но я не могу заставить его работать :-(. Все xticks сохранены, но я все еще получаю xticklabel на каждом xtick, более того, мои xticklabels заменяются номерами теперь (от 1 до 60) ... – Sarah

+0

Извините , моя ошибка, он отлично работает :-). – Sarah

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