#matlab #plot #scatter-plot #colorbar
#matlab #график #точечный график #цветная панель
Вопрос:
Я хочу, чтобы у каждого подзаголовка была одинаковая цветовая шкала. Я знаю, что 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;
Теперь я хочу, чтобы подзаголовки рассеяния имели общую шкалу цветовой шкалы. Я пытался использовать 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;
Ответ №1:
То, что вы видите, является правильным поведением 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])
Выглядит ли приведенный выше график лучше?
Комментарии:
1. Это работает! Затем я могу изменить метки на цветовой панели на
1e-4
и т.д.