cLine
cLine plots lines of data with error bars. A data cell-array is expected, with a matrix per cell containing the observation per row. The mean over rows is plotted as line segments. Example for inputs:
X = [1 2 4]; data{1} = [30 35 50; 29 27 45; 29 20 49]; data{2} = [10 60 11; 11 89 40; 9 50 20]; figtitle = 'cLine Plot'; xtitle = ''; ytitle = 'Y-title'; xticklabels = {'Session 1', 'Session 2', 'Session 3'}; legend_strings = {'Group 1', 'Group 2'}; colormatrix = [0 0 0; 1 0 0.75]; cLine(X, data, figtitle, xtitle, ytitle, xticklabels, legend_strings, colormatrix);Here's the code to copy-paste:
function cLine(X, data, figtitle, xtitle, ytitle, xticklabels, legend_strings, colormatrix) % function cLine(X, data, figtitle, xtitle, ytitle, xticklabels, legend_strings, colormatrix) % % X = [x1 x2 ... xn]; % data{lines} = [subjects x points] % figtitle, xtitle, ytitle = '...' % xticklabels{x-points} = '...' % legend_string = '...' % colormatrix: [lines x RGB]; % % Thomas E. Gladwin & Matthijs Vink, 2008. fid = figure; p = get(fid, 'Position'); p(4) = p(3); set(fid, 'Position', p); lines_for_legend = []; for iLine = 1:length(data), m = mean(data{iLine}, 1); se = (var(data{iLine}, 1) .^ (1/2)) / sqrt(size(data{iLine}, 1)); % Mean line for seg = 1:(length(m) - 1), l = line([X(seg) X(seg + 1)], [m(seg) m(seg + 1)]); set(l, 'Color', colormatrix(iLine, :)); set(l, 'LineWidth', 2); end; lines_for_legend = [lines_for_legend l]; % Error bars for point = 1:length(m), x = X(point); w = mean(diff(X)) / 20; yc = m(point); yu = yc + se(point); yd = yc - se(point); l = line([x x], [yd yu]); set(l, 'Color', colormatrix(iLine, :)); l = line([x - w x + w], [yd yd]); set(l, 'Color', colormatrix(iLine, :)); l = line([x - w x + w], [yu yu]); set(l, 'Color', colormatrix(iLine, :)); end; end; xl = xlim; if diff(xl) == 0, xl(2) = xl(1) + 1; end; yl = ylim; for iLine = 1:length(data), m = mean(data{iLine}, 1); % Square for point = 1:length(m), x = X(point); y = m(point); wh = mean(diff(X)) / 20; wv = wh * diff(yl) / diff(xl); patch([x - wh, x - wh, x + wh, x + wh], [y - wv, y + wv, y + wv, y - wv], colormatrix(iLine, :)); end; end; legend(lines_for_legend, legend_strings); set(gca, 'XTick', X); set(gca, 'XTickLabel', xticklabels); fs = get(gca, 'FontSize'); set(gca, 'FontSize', 1.5 * fs); t = title(figtitle); set(t, 'FontSize', 1.5 * fs); t = xlabel(xtitle); set(t, 'FontSize', 1.5 * fs); t = ylabel(ytitle); set(t, 'FontSize', 1.5 * fs);