Общая цветовая шкала для точечных диаграмм в Matlab с небольшими числами - PullRequest
5 голосов
/ 09 мая 2011

Я хочу, чтобы каждый субплот имел одинаковую шкалу цветовой шкалы.Я знаю, что caxis работает для целых чисел больше 1, но, похоже, проблема в использовании caxis со значениями, такими как 0,001.

 x = 0:1:10;
 y = 0:1:10; 
 z1 = .1:-.01:0;
 z2 = .01:-.001:0;

figure;
 subplot(1,2,1);
 scatter(x,y,10,z1); colorbar;
 subplot(1,2,2);
 scatter(x,y,10,z2);  colorbar;

ex1

Теперь я хочучтобы иметь точечные диаграммы, чтобы иметь общую шкалу цветовой шкалы.Я пытался использовать caxis, однако я не получаю желаемых результатов. Левая ось не масштабируется правильно, поскольку все они коричневые. Как это можно исправить?

 ca = [0 .01];
 figure;
 subplot(1,2,1);
 scatter(x,y,10,z1); caxis(ca); colorbar;
 subplot(1,2,2);
 scatter(x,y,10,z2);  caxis(ca); colorbar;

enter image description here

1 Ответ

8 голосов
/ 09 мая 2011

То, что вы видите, это правильное поведение из caxis. Когда вы устанавливаете caxis([0 0.01]), всем значениям больше 0.01 присваивается красный цвет (или коричневый, как вы его называете). В z1 все, кроме последней точки, больше 0.01, поэтому все они отмечены красным. Если вы попробовали caxis([0 0.1]), вы увидите, что график справа весь синий. Динамический диапазон двух ваших участков представлен на порядок друг от друга, и поэтому вы не сможете адекватно представить оба этих изображения с одним пределы caxis.

Вы пытались использовать логарифмическую цветовую шкалу? Попробуйте следующее:

subplot(1,2,1);
scatter(x,y,10,log10(z1)); colorbar;
caxis([-3 -1])

subplot(1,2,2);
scatter(x,y,10,log10(z2));  colorbar;
caxis([-3 -1])

enter image description here

Вышеупомянутый сюжет выглядит лучше?

...