ОК, поэтому я постараюсь ответить на свой вопрос, основываясь на предложениях, высказанных в комментариях:
Предложение 1: сделать все ячейки одинаковыми
Это улучшит результатыдо некоторой степени, но это все еще проблема из-за отсутствия прозрачности для объектов исправлений.
Изменения кода:
nbins = 15;
xbin = linspace(5.8,6.5,nbins);
for k = 1:nb_channels
for n = 1:nb_conditions
% some complex calculations to generate temp variable
freq_flow(:,n,k) = hist(temp,xbin);
end
end
figure
for k = 1:nb_channels
subplot(2,2,k)
for n = 1:nb_conditions
bar(xbin,freq_flow(:,n,k),'FaceColor',plot_colours(:,n))
hold on
end
hold off
xlim([5.8 6.3])
legend('condition #1','condition #2','condition #3','condition #4','condition #5','condition #6','condition #7')
end
Что дает следующий график:
![enter image description here](https://i.stack.imgur.com/0HdMN.jpg)
Предложение 2: Используйте линейные графики вместо гистограмм
Это немного больше помогает с точки зрения читабельности.Тем не менее, результат немного «поштучно».
Изменения кода:
figure
for k = 1:nb_channels
subplot(2,2,k)
for n = 1:nb_conditions
plot(xbin,freq_flow(:,n,k),'LineStyle','none','marker','.',...
'markersize',12,'MarkerEdgeColor',plot_colours(:,n),...
'MarkerFaceColor',plot_colours(:,n))
hold on
end
hold off
xlim([5.8 6.3])
legend('condition #1','condition #2','condition #3','condition #4','condition #5','condition #6','condition #7')
end
, что дает следующий результат:
![enter image description here](https://i.stack.imgur.com/MVw5M.jpg)
Легенда немного испорчена, но я, вероятно, смогу разобраться с этим.
Разновидность, которую я также попробовал, состояла в том, чтобы построить только точки в качестве маркеров, а затем подобрать нормальное распределениенаверху.Я не буду публиковать здесь весь код, но результат выглядит примерно так:
![enter image description here](https://i.stack.imgur.com/XAbnW.jpg)
Предложение 3: обход прозрачности с помощью gnuplot
К сожалению, до того, как я попал в обход прозрачности, gnuplot
продолжает падать при попытке построить фигуру.Я думаю, что есть кое-что, что не нравится в сюжетах и легендах (именно поэтому я в первую очередь перешел на qt
графический инструментарий, поскольку у меня была точно такая же проблема в других частях кода).
Решение 4: использовать 3D-гистограмму
Я нашел это на SO: 3D-гистограмма с gnuplot или октавой
и использовал ее так:
figure
for k = 1:size(flow_factor,2)
subplot(2,2,k)
h = my_bar3(freq_flow(:,:,k));
fvcd = kron((1:numel(freq_flow(:,:,k)))', ones(6,1));
set(h, 'FaceVertexCData',fvcd, 'FaceColor','flat', 'CDataMapping','scaled')
colormap hsv; axis tight; view(50,25)
ylbl = cell(length(xbin),1);
for k=1:length(xbin)
ylb{k} = num2str(xbin(k));
end
set(gca,'YTick',1:2:nbins);
set(gca,'YTickLabel',ylb(1:2:end));
end
для получения:
![enter image description here](https://i.stack.imgur.com/RXbsg.jpg)
Что неплохо, но, вероятно, не так ясно, как линейные графики.
Заключение
В целом, я, вероятно, в конечном итоге буду использовать один из подходов линейных графиков, поскольку они имеют тенденцию быть более четкими.