2015-03-12 6 views
0

У меня есть гистограмма с двумя разными данными (каждый с другим цветом, как вы можете видеть на картинке). Я хотел бы переместить ось x, чтобы она пересекалась при y = -100 (например). Поэтому, если данные = -40, я бы хотел иметь панель от -100 до -40.MATLAB: bar graph_ изменить параметры на оси

Другой вопрос: возможно ли каждое значение оси x вертикально (потому что со всеми значениями мы ничего не видим).

Последний вопрос: возможно ли иметь 2 разных шкалы для x_axis?

enter image description here

Спасибо заранее,

С наилучшими пожеланиями,

ответ

0

Вот код, чтобы ты. Все комментируется так что должно быть легко следовать:

clear 
clc 
close all 

%// Generate dummy data 
y = -90*rand(1,20); 
NumY = numel(y); 

HalfData = round(NumY/2); 

%// Loop to color half in pink and half in blue 
hold all 
for k = 1:NumY 

    hBar = bar(k,y(k)); 

    if k <= HalfData 
     set(hBar,'FaceColor',[1 0 1]) 

    else 
     set(hBar,'FaceColor',[0 0 1]) 

    end 
end 
hold off 

%// Get xtick labels and position for future use 
xtLabels = cellstr(get(gca,'XTickLabel')).'; 
xtPos = get(gca,'XTick'); 

%// Change baseline value 
set(hBar,'BaseValue',-40) 

%// Get baseline to change its properties if you want 
hBaseL = get(hBar,'Baseline'); 

set(hBaseL,'LineStyle','--','Color','k','LineWidth',3) 

%// Adjust axis limits. Remove labels to place them vertically 
set(gca,'XLim',[0 NumY],'XTickLabel',{''}) 

%// Get correct position for xlabel text 
YLimPoArrays = min(get(gca,'YLim')); 

YLimPoArrays = repmat(YLimPoArrays,numel(xtPos),1); 

%// Place text positioned vertically with a small y offset 
text(xtPos,YLimPoArrays-3,xtLabels,'HorizontalAlignment','center','Rotation',90,'FontSize',15) 

И выход:

enter image description here

Надежда, что помогает!

+0

спасибо! Все отлично! – user3654295

+0

Отлично! Если это поможет, вы можете пометить ответ как принятый, пожалуйста? (Зеленая галочка рядом с ним). Благодаря! –

+1

да, конечно! – user3654295

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