我想制作一个具有多个分组级别的分组条形图,如下所示 -
我想拥有角色' AR'在图中。图表的数据附在帖子上。
Col1 Col2 Col3 Col4
AR 1
AR 1100 0.5 2
AR 1100 1 3
5 1000 0.5 4
5 1000 1 5
5 1050 0.5 4
5 1050 1 5
5 1100 0.5 4
5 1100 1 5
15 1000 0.5 4
15 1000 1 5
15 1050 0.5 4
15 1050 1 5
15 1100 0.5 4
15 1100 1 5
第1列至第3列的数据应用于X轴的分组和第4列的数据,以用于柱的高度。
是否可以为分组添加前缀或后缀,如0.5h或1000 C或5%?
答案 0 :(得分:0)
好吧,在没有任何其他答案的情况下,我会发布我的尝试(在Octave完成)。它并不完美,但它是我能做的最好的事情。我将您的数据放在*.csv
文件中:
我必须为每个栏创建一个XTickLabel
。此外,由于csvread
仅导入数字数据,因此我必须手动调整前3个条形的XTickLabel
。可能有更好,更聪明的方法来做到这一点:
data = csvread('data.csv');
data_str = cell(size(data,1),1);
for k=1:size(data,1)
if k<=3
data_str{k} = sprintf([num2str(data(k,3)) '\n' num2str(data(k,2)) '\nAR']);
else
data_str{k} = sprintf([num2str(data(k,3)) '\n' num2str(data(k,2)) '\n' num2str(data(k,1))]);
end
end
data_str{1} = sprintf(['' '\n' '' '\nAR']);
figure
hold on
h1 = bar(1:2:size(data,1),data(1:2:end,4));
set(h1,'FaceColor','g','BarWidth',0.4)
legend('D','Location','NorthEast')
h2 = bar(2:2:size(data,1),data(2:2:end,4));
set(h2,'FaceColor','b','BarWidth',0.4)
set(gca,'XTick',1:15)
set(gca,'XTickLabel',data_str)
xlim([0 size(data,1)+1])
ylim([0 max(data(:,4))+1])
ylabel('D')
这给出了以下结果:
答案 1 :(得分:0)
y = [1 2 3 4 5 4 5 4 5 4 5 4 5 4 5];
figure
% hold on
h = bar(y);
xTick = 1:15;
set(gca,'xtick',xTick);
yTick = get(gca,'ytick');
set(gca,'xticklabel',[])
xTickLabel = {{'-\newline';'-';'AR'},{'0.5h';'1100 C';'AR'},{'1h';'1100 C';'AR'},{'0.5h'; '1000C' ;'5%'},{'1h'; '1000C';'5%'},{'0.5h'; '1050C'; '5%'},{'1h'; '1050C'; '5%'},{'0.5h'; '1100C'; '5%'},{'1h'; '1100C'; '5%'},{'0.5h'; '1000C'; '15%'},{'1h'; '1000C'; '15%'},{'0.5h'; '1050C'; '15%'},{'1h'; '1050C'; '15%'},{'0.5h'; '1100C'; '15%'},{'1h'; '1100C'; '15%'}};
for k = 1:length(xTick)
text(xTick(k),yTick(1)-0.06*(yTick(end)-yTick(1)),xTickLabel{k},'HorizontalAlignment','center')
end