Общая цветовая панель для точечных графиков в Matlab с небольшими числами

#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;
  

пример 1

Теперь я хочу, чтобы подзаголовки рассеяния имели общую шкалу цветовой шкалы. Я пытался использовать 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 и т.д.