Двусторонний гистограммный график с 3d столбцами И разными цветами столбцов - PullRequest
0 голосов
/ 04 июня 2018

Функция 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 голосов
/ 04 июня 2018
TL; DR:
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.

...