Как изменить масштаб цветовой полосы Matlab

Мне очень трудно понять, как изменить диапазон моей цветовой полосы в Matlab2015b.

По умолчанию он будет варьироваться от 0 до 1. Мне удалось изменить метку, используя:

    c=colorbar;
    c.Limits=[0 180] % the range that I want

Проблема в том, что цвета не масштабируются, когда я это делаю, другими словами, он будет отображать от 0 до 180, но по-прежнему использует цвета, связанные с [0 1], что делает всю полосу похожей на один цвет.

введите здесь описание изображения

Я использовал другой подход, просто изменив галочки и выполнив:

colorbar('Yticks',[0:10:180]).

Опять же, цветовая полоса по-прежнему привязана к значениям от 0 до 1, поэтому ни одна из галочек, кроме 0, не появится, поскольку первая начинается с 10.

введите здесь описание изображения

Как изменить данные, на которых он основан? Я пытался изменить c.UserData, но это ничего не дало.


person Kevin Héritier    schedule 11.11.2015    source источник
comment
Не могли бы вы опубликовать образец своего кода? Я не могу воспроизвести эту проблему. Моя цветовая полоса автоматически использует диапазон данных.   -  person Schorsch    schedule 11.11.2015
comment
Конечно, в этом случае я действительно использую цветовую полосу отдельно от самого графика, это не значит, что я рисую поверхность и добавляю к ней цветовую полосу. Я рисую серию кривых, и я хотел бы использовать цветную полосу вместо легенды (поскольку кривых много, и так они будут выглядеть лучше). h=loglog(fliplr(PeTotal)/1e6,zTab/1000); %набор кривых, которые я рисую colorCode=jet(length(chiTab)); для k=1:length(chiTab) %length(chiTab) - это просто количество наборов кривых(h(k),'Color',colorCode(k,:)); конец цветовой карты (colorCode); цветная полоса;   -  person Kevin Héritier    schedule 11.11.2015


Ответы (2)


Из вашего комментария я вижу, что вы пытаетесь сделать.

Вы находитесь на правильных строках, устанавливая ytick, но, как вы заметили, это только меняет положение галочек на вашей цветовой полосе, но масштабирование остается прежним. Вместо этого попробуйте установить yticklabel:

% Show the colorbar
c = colorbar;

% Define the desired ticks
ticks = [0:10:180];

% Sets the correct location and number of ticks
set(c, 'ytick', ticks / max(ticks));

% Set the tick labels as desired
set(c, 'yticklabel', ticks);
person zelanix    schedule 11.11.2015

Способ, который не переопределяет вручную спецификацию тика, может быть достигнут следующим образом:

limits = [0,180];
c = colorbar;
set(gca,'clim',limits([1,end]))

Оттуда галочки могут быть изменены вручную или оставлены в покое по желанию.

  1. Цветная шкала исходного масштаба
  2. Изменено масштабирование, но сохранены метки с автоматической пометкой

введите здесь описание изображения введите здесь описание изображения

person M. Thompson    schedule 18.04.2019