2

histogram2函数(在 R2015b 中添加)具有DisplayStyle可选参数,该参数控制输出是使用“条”(颜色统一但高度不同)还是“图块”(高度相同,但颜色不同)显示,如如下所示:

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');

直方图两种模式的演示2

我想结合这两种模式,得到不同高度的条形图,它们有不同的颜色。如前所述,我尝试使用该'DisplayStyle'选项,但它同时更改了太多视觉元素。任何人都可以建议一种方法来获得我想要的东西吗?

我非常希望解决方案成为一个histogram2对象(而不是 eg bar3),因为这些在以后使用起来更方便。

4

1 回答 1

4
TL;博士:
histogram2(X, Y, 'FaceColor', 'flat');

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

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

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

hH(1).FaceColor = 'flat';

这个工作的原因可以在以下文档中FaceColor找到:

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

'none'——……

'flat'条形颜色随高度而变化。不同高度的条有不同的颜色。颜色是从图形或坐标区颜色图中选择的

'auto'——……

... 早先的阅读本可以节省一些时间。


这里要吸取的教训是:

当有大量文档可用时1,我们不应该只停留在与出问题相关的第一件事上,因为一个明显的解决方案可能会出现在更远的地方。

1大多数 MATLAB 函数的情况,尤其是 MATLAB 的图形对象。

于 2018-06-04T09:26:36.510 回答