透明重叠条形图

时间:2018-02-19 11:50:26

标签: matlab

我希望有两个透明条形图重叠在一个图中。我试过这种方式:

bar(list2(:,1),list2(:,2),'r','FaceAlpha',0.5)
hold on
bar(list1(:,1),list1(:,2),'g','FaceAlpha',0.5)

但输出是: bar plot

为什么第二个情节不透明并且有这些奇怪的条带? 我用matlab 2016a

1 个答案:

答案 0 :(得分:9)

你的方法是正确的,它适用于几个条:

[list1(:,2),list1(:,1)] = hist(randn(200,1));
[list2(:,2),list2(:,1)] = hist([randn(100,1)-0.5 ; randn(100,1)+0.5]);

bar(list2(:,1),list2(:,2),'r','FaceAlpha',0.5)
hold on
bar(list1(:,1),list1(:,2),'g','FaceAlpha',0.5)

Histogram

但是,您可以注意到每个条纹都有黑色线条。随着条形码数量的增加,黑色轮廓将覆盖所有内容:

[list1(:,2),list1(:,1)] = hist(randn(3000,1), 300);
[list2(:,2),list2(:,1)] = hist([randn(1500,1)-2 ; randn(1500,1)+2], 300);

h1 = bar(list2(:,1),list2(:,2),'r','FaceAlpha',0.5)
hold on
h2 = bar(list1(:,1),list1(:,2),'g','FaceAlpha',0.5)

Dense histogram

(结果将取决于Matlab版本。在2016b中,问题会自动得到纠正)。

解决方案:去除黑色轮廓:

h1.EdgeColor = 'none';
h2.EdgeColor = 'none';

Dense histogram corrected