双变量直方图用3d条和不同的条颜色

时间:2018-06-04 09:26:37

标签: matlab plot histogram bar-chart matlab-figure

histogram2函数(在R2015b中添加)具有DisplayStyle可选参数,该参数控制输出是使用“条形”(均匀颜色但高度不同)或“图块”(带有相同的高度为0,但颜色不同,如下所示:

rng(1337); X = rand(100,1)-0.5; Y = randn(100,1); rng('default');
figure(); 
subplot(1,2,1); hH(1) = histogram2(X, Y, 'DisplayStyle', 'bar3');
subplot(1,2,2); hH(2) = histogram2(X, Y, 'DisplayStyle', 'tile');

Demonstration of the two modes of histogram2

我想将这两种模式结合起来,以获得不同高度的条形,其中具有不同的颜色。如上所述,我尝试使用'DisplayStyle'选项,但它同时更改了太多的可视元素。任何人都可以提出一种方法来获得我想要的东西吗?

我非常希望解决方案成为histogram2对象(而不是bar3),因为稍后使用它们会更加方便。

1 个答案:

答案 0 :(得分:4)

TL; DR:
histogram2(X, Y, 'FaceColor', 'flat');

那些更喜欢“强力”方法而不是彻底阅读文档的人可能会通过深入比较两个结果对象(hH(1)hH(2)),找到不同的属性,然后尝试分配来解决这个问题来自其他风格的理想值。实际上,这些差异出现了:

  • FaceColor'auto''flat',分别在“蓝色”和“平面”图表中。
  • FaceLighting'lit''none',分别在“蓝色”和“平面”图表中。

然后,幸运的是,以下行确实有效:

hH(1).FaceColor = 'flat';

这可行的原因可在documentation of FaceColor

中找到
  

直方图条形颜色,指定为以下值之一:

     

'none' - ....

     

'flat' - 条形颜色因高度而异。不同高度的酒吧有不同的颜色。颜色从图形或轴颜色图中选择。

     

'auto' - ....

......之前的阅读可以节省一些时间。

这里要学到的教训是:

当有大量文档 1 时,我们不应该只停留与问题相关的第一件事,因为一个明显的解决方案可能会稍微向下看。 / em>的

1 大多数MATLAB函数的情况,特别是对于MATLAB的图形对象。