Групповые графики с планками погрешностей

У меня есть следующий код, который делает сюжет:

dfs = [0  5 10 15 20 25 ];
Intensities = [0.0593 0.0910 0.1115 0.0611 0.0975 0.0715] ;
SE = [0.2165 0.2068 0.2555 0.2479 0.2340 0.2239];

errorbar(dfs, Intensities, SE, 'ro');
hold on
plot(dfs,Intensities,'bo');
title('\fontsize{14}Intensities per condition');
hold off;

ylim([-0.2 0.5])

names = {'\fontsize{12}Cond1, Group1'; '\fontsize{12}Cond2, Group1'; '\fontsize{12}Cond1, Group2'; '\fontsize{12}Cond2, Group2'; '\fontsize{12}Cond1, Group3';'\fontsize{12}Cond2, Group3'};
set(gca, 'xtick', dfs, 'xticklabel', names);
xlim([-1 26]);  %just for better visualisation
ylabel('\fontsize{14}Intensities')

Я хотел бы сгруппировать точки с их полосами ошибок попарно. Таким образом, все точки (точечные оценки) 1, 3, and 5 относятся к условию 1, а точки 2, 4 and 6 относятся к условию 2. Я имею в виду только то, что должно быть какое-то указание на то, что 1, 3, 5 принадлежит условию 1, а 2, 4, 6 — условию 2, например, в виде легенды. Но legend('Condition 1','Condition 2') здесь не работает должным образом. Размещение всей информации на галочках по оси X — это слишком много контента. В качестве альтернативы также было бы нормально указать, что первые 2 принадлежат к группе 1, следующие два — к группе 2 и т. д.
Что можно сделать?


person Pugl    schedule 01.11.2017    source источник
comment
Что-то вроде этого или это? Даже если функции являются ящичковыми диаграммами, они должны быть одинаковыми для планок погрешностей.   -  person Ander Biguri    schedule 01.11.2017
comment
Также укажите Accuracies.   -  person Dev-iL    schedule 01.11.2017
comment
Готово, и спасибо, Андер!   -  person Pugl    schedule 01.11.2017


Ответы (1)


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

В первом случае, т. е. мало условий и много групп, замените команду plot на:

h(1) = scatter(dfs(1:2:end),Intensities(1:2:end),'o','filled');
h(2) = scatter(dfs(2:2:end),Intensities(2:2:end),'o','filled');
%filling the dots so that your eyes may not dodge you about the colors :D
%I choose 1:2:end and 2:2:end for the first and second lines since there seems to be
%an order. If there is no order, you can explicitly state that as: [1 3 5] or [2 4 6]

а затем удалите строку, в которой вы меняете xticklabels, и используйте легенду как:

legend(h,'condition1','condition2');

output1
Рис. 1. Меньше условий, много групп


Во втором случае, т. е. нескольких групп и многих условий, замените команду plot на:

for k=1:3
    h(k) = scatter(dfs([2*k-1 2*k]),Intensities([2*k-1 2*k]),'o','filled'); 
end                    %     ^---------generalised the formula

а затем удалите строку, в которой вы меняете xticklabels, и используйте легенду как:

legend(h,'group1','group2','group3');

output2
Рис. 2. Больше условий, меньше групп

person Sardar Usama    schedule 01.11.2017