2010-07-14 2 views
4

В MATLAB можно создать единый график из двух связанных источников данных с первым источником, построенным по дну оси x, а второй - сверху вниз оси х?Matlab, график двух рядов данных в одном графике

Я не могу найти нигде в документации MATLAB, где это делается.

Окончательный график мне нужно в такой форме, как это:

http://www.epa.gov/ncer/progress/images/R827933C033_02_003.gif

ответ

6

Я попытался воспроизвести свой график как можно ближе. Вот что я закончил с:

t = linspace(datenum('01-19-2002'), datenum('06-27-2002'), 12); 
x1 = randi(40, [12 1]); 
x2 = randi(40, [12 1]); 
z = 100-x1-x2; 

hAxR = axes(); 
hAxL = axes(); 

h = bar(t, [x1 z x2], 'stacked'); 

set(h(1),'facecolor','y') 
set(h(2),'facecolor',[.8 .8 .8]) 
set(h(3),'facecolor','r') 
legend(h, {'s1' 's2' 's3'}, ... 
    'orientation','horizontal', 'location','northoutside') 

set(hAxL, 'xtick',t, 'xlim',[datenum('01-01-2002') datenum('07-15-2002')]) 
datetick(hAxL, 'x',2,'keepticks','keeplimits') 
xticklabel_rotate 

ylabel(hAxL, 'label1') 
ylabel(hAxR, 'label2') 

set(hAxR, 'position',get(hAxL,'position'), 'color','none', 'xtick',[], ... 
    'ydir','reverse', 'yaxislocation','right', 'ylim',get(hAxL,'ylim')) 
set(hAxL, 'YGrid','on') 

graph

Я использую XTICKLABEL_ROTATE, чтобы повернуть метки на оси х

+1

Gah! Ударьте меня на 5 минут! Обратите внимание, что с http://www.mathworks.com/matlabcentral/fileexchange/18826-hatch-fill-patterns-plus-plus вы можете получить залитые заливками заливки для баров. Кроме того, вы можете заменить «label1» и «label2» на реальную вещь. +1 для отличного решения. – Jonas

+0

@ Jonas: Спасибо, я просто смотрел представление на FEX для заштрихованных моделей, как цвета – Amro

+0

Я только заметил, что вы только построили одну серию баров. Учитывая название вопроса, я подумал, что OP хочет, чтобы одна многослойная линейка с двумя цветами и одна серия баров с рисунком перекрестной штриховки. Таким образом, вам нужно запустить 'hBL = bar (hAxL, data1); hBR = bar (hAxR, data2)'. – Jonas

0

Заканчивать документацию по функции bar. Вы можете использовать его для создания графиков, как следующее:

bar2.gif

bar_ex2.gif

+1

Почему -1? Это не полное решение, но оно должно получить OP на правильном пути. – Doresoom

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